Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

जावा में फेल-फास्ट और फेल सेफ के बीच अंतर


Sr. नहीं. कुंजी असफल-तेज़ असफल-सुरक्षित
1
अपवाद
संग्रह में कोई भी परिवर्तन, जैसे कि एक थ्रेड के दौरान संग्रह को जोड़ना, हटाना और अद्यतन करना संग्रह को पुनरावृत्त कर रहा है फिर फ़ेल फ़ास्ट थ्रो समवर्ती संशोधन अपवाद।
असफल-सुरक्षित संग्रह अपवाद नहीं फेंकता।
2.
संग्रह का प्रकार
ArrayList और हैशमैप संग्रह विफल-तेज़ पुनरावृत्ति के उदाहरण हैं
CopyOnWrite और समवर्ती संशोधन एक असफल-सुरक्षित पुनरावर्तक के उदाहरण हैं
3.
प्रदर्शन और स्मृति
यह इसके बजाय वास्तविक संग्रह पर काम कर रहा है। तो, इस इटरेटर को अतिरिक्त मेमोरी और समय की आवश्यकता नहीं है
यह वास्तविक संग्रह के बजाय संग्रह के क्लोन पर काम कर रहा है। यह समय और स्मृति के मामले में ओवरहेड है
4.
संशोधन
इटरेटर किसी संग्रह पर पुनरावृति करते समय उसमें संशोधन की अनुमति नहीं देते हैं।
असफल-सुरक्षित पुनरावर्तक किसी संग्रह पर पुनरावृति करते हुए उसमें संशोधन की अनुमति देते हैं।

फेलसेफ का उदाहरण

public class FailSafeExample{
   public static void main(String[] args){
      ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<String, Integer>();
      //Adding elements to map
      map.put("Dell", 1);
      map.put("IBM", 2);
      //Getting an Iterator from map
      Iterator<String> it = map.keySet().iterator();
      while (it.hasNext()){
      String key = (String) it.next();
         System.out.println(key+" : "+map.get(key));
         map.put("Google", 3);
      }
   }
}

आउटपुट

IBM :2
Dell:1

फेलसेफ का उदाहरण

public class FailFastExample{
   public static void main(String[] args){
      List<Integer> list = new ArrayList<Integer>();
      list.add(1);
      list.add(2);
      list.add(3);
      //Getting an Iterator from list
      Iterator<Integer> it = list.iterator();
      while (it.hasNext()){
         Integer integer = (Integer) it.next();
         list.add(4);
      }
   }
}

आउटपुट

Exception in thread "main" java.util.ConcurrentModificationException
   at java.util.ArrayList$Itr.checkForComodification(Unknown Source)

  1. जावा में इटरेटर और एन्यूमरेशन के बीच अंतर

    इटरेटर और एन्यूमरेशन दोनों ही संग्रह से किसी तत्व को पार करने और एक्सेस करने के लिए कर्सर हैं। वे दोनों संग्रह ढांचे से संबंधित हैं। संग्रह ढांचे में JDK1.0 और Iterator में JDK.1.2 संस्करण में गणना जोड़ी गई थी। एन्यूमरेशन संग्रह में संरचनात्मक परिवर्तन नहीं कर सकता क्योंकि इसमें संग्रह में तत्व तक

  1. जावा में ऐरेलिस्ट और हैशसेट के बीच अंतर

    हैशसेट और ऐरेलिस्ट दोनों ही जावा संग्रह ढांचे के कुछ सबसे महत्वपूर्ण वर्ग हैं। ArrayList और हैशसेट के बीच महत्वपूर्ण अंतर निम्नलिखित हैं। सीनियर। नहीं. कुंजी ऐरेलिस्ट हैशसेट 1 कार्यान्वयन ArrayList सूची इंटरफ़ेस का कार्यान्वयन है। दूसरी ओर हैशसेट एक सेट इंटरफ़ेस का कार्यान्वयन है। 2 आंतरिक क

  1. जावा में एक इटरेटर और लिस्टइटरेटर के बीच अंतर

    जावा ने इन दो इंटरफेस को एक संग्रह में संग्रहीत डेटा को एक-एक करके पार करने के लिए प्रदान किया। इटरेटर और लिस्ट इटरेटर का आंतरिक कार्यान्वयन उन्हें अलग बनाता है लेकिन दोनों इटरेटर का मुख्य एजेंडा एक ही है। Iterator और ListIterator के बीच महत्वपूर्ण अंतर निम्नलिखित हैं। वरिष्ठ। नहीं. कुंजी पुनरावर्त