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)
Основной учебник
Рекомендуем также