Найти тему

Разница между fail-fast и fail-safe Iterator

Оглавление

fail-fast Iterator

Итераторы в Java используются для итерации по объектам Collection. Fail-Fast итераторы бросают ConcurrentModificationException исключение, когда кто-то пытается модификация коллекции. Под этим понимаем добавление, удаление или обновление любого элемента из коллекции, когда поток выполняет итерацию по этой коллекции. Iterator в классах ArrayList, HashMap - это примеры fail-fast Iterator.

fail-safe Iterator

Fail-safe итераторы не генерируют никаких исключений, если коллекцию изменили во время итерации по ней. Это связано с тем, что они работают с клоном коллекции, а не с исходной коллекцией, и поэтому их называют fail-safe итераторами. Итератор в классах CopyOnWriteArrayList, ConcurrentHashMap являются примерами fail-safe итератора.