English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
الترقيم | المفتاح | الفشل | المضاد للفشل |
---|---|---|---|
1 | الاستثناءات | أي تغيير في المجموعة (مثل إضافة، إزالة وتحديث المجموعة أثناء الاستدلال) يجعل الاستدلال على المجموعة، ثم يفشل بسرعة ببث استثناء التغيير المتوازي. | المجموعات المضادة للفشل لا تسبب استثناءات. |
2. | أنواع المجموعات | ArrayList و مجموعات hashmap هي أمثلة على المعالج السريع الفاشل | CopyOnWrite و التعديلات المتوازية هي أمثلة على المعالج المضاد للفشل |
3. | ال أداء والذاكرة | بل يعمل على المجموعة الفعلية. لذلك، لا يحتاج هذا المعالج إلى ذاكرة إضافية أو وقت إضافي | انه يعالج نسخة مكررة من المجموعة وليس المجموعة الفعلية. تكاليف الوقت والذاكرة |
4. | التعديلات | المعالج لا يسمح بتعديل المجموعة أثناء الت迭代 فوقها. | المعالج المضاد للفشل يسمح بتعديل المجموعة أثناء الت迭代 فوقها. |
public class FailSafeExample{ public static void main(String[] args){ ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<String, Integer>(); // در نقشه به دست آورندهی عناصر اضافه میکنیم map.put("Dell", 1); map.put("IBM", 2); // از نقشه به دست آورندهی تکرارکنندهی دریافت میکنیم 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); // از لیست به دست آورندهی تکرارکنندهی دریافت میکنیم 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)