English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

الفرق بين السرعة والسلامة في Java

الترقيمالمفتاحالفشلالمضاد للفشل
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)
أعجبك ذلك