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

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


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

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

public class FailSafeExample{ 
    public static void main(String[] args){ 
        ConcurrentHashMap map = new ConcurrentHashMap(); 
        // मैप में एलिमेंट जोड़ना 
        map.put("Dell", 1); 
        map.put("IBM", 2); 
        // मैप से इटरेटर प्राप्त करना 
        Iterator 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 list = new ArrayList(); 
        list.add(1); 
        list.add(2); 
        list.add(3); 
        // लिस्ट से इटरेटर प्राप्त करना 
        Iterator 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. - जावा में Iterator और Enumeration के बीच अंतर

    Iterator और Enumeration दोनों कलेक्शन से एलिमेंट्स को ट्रैवर्स और एक्सेस करने के लिए कर्सर हैं। वे दोनों कलेक्शन फ्रेमवर्क से संबंधित हैं। Enumeration JDK 1.0 में जोड़ा गया था और Iterator JDK 1.2 वर्जन में कलेक्शन फ्रेमवर्क में जोड़ा गया। Enumeration कलेक्शन में स्ट्रक्चरल चेंज नहीं कर सकता क्योंकि

  1. - Java में ArrayList और HashSet के बीच अंतर

    HashSet और ArrayList दोनों Java कलेक्शन फ्रेमवर्क के सबसे महत्वपूर्ण क्लासेस में से कुछ हैं।ArrayList और HashSet के बीच महत्वपूर्ण अंतर निम्नलिखित हैं।क्रमांकमुख्य बिंदुArrayListHashSet1कार्यान्वयनArrayList लिस्ट इंटरफेस का कार्यान्वयन है।दूसरी ओर HashSet सेट इंटरफेस का कार्यान्वयन है।2आंतरिक कार्या

  1. - Java में Iterator और ListIterator के बीच अंतर

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