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)