Sr. না। | কী | ফেল-ফাস্ট | ফেল-সেফ |
1 | ব্যতিক্রম৷ | সংগ্রহের যেকোন পরিবর্তন, যেমন একটি থ্রেডের সময় সংগ্রহ যোগ করা, অপসারণ করা এবং আপডেট করা সংগ্রহের পুনরাবৃত্তি হয় তারপর ফেইল ফাস্ট থ্রো কনকারেন্ট পরিবর্তন ব্যতিক্রম। | ব্যর্থ-নিরাপদ সংগ্রহ ব্যতিক্রম নিক্ষেপ করে না। |
2. | সংগ্রহের ধরন | অ্যারেলিস্ট এবং হ্যাশম্যাপ সংগ্রহ ব্যর্থ-দ্রুত পুনরাবৃত্তিকারীর উদাহরণ | 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)