Что такое отказобезопасные и отказоустойчивые итераторы в Java

Неуправляемые итераторы

Fail-Fast iterators, возвращенные большинством типов коллекций, не переносят каких-либо структурных изменений в коллекции, итерации по ней. В Java отказоустойчивый итератор выходит из строя, вызывая исключение ConcurrentModificationException. Структурные изменения означают добавление, удаление или обновление любого элемента из коллекции, в то время как один поток Итерирует по этой коллекции. быстрое выполнение выполняется путем сохранения количества модификаций, и если итерационный поток реализует изменение в модификации, подсчитывает его броски

Истребители с отказоустойчивостью

В отличие от отказоустойчивого итератора, отказобезопасный итератор не бросает никакого Исключения, если коллекция модифицируется структурно, в то время как один поток выполняет Итерацию над ним, потому что они работают с клоном Collection вместо оригинальной коллекции, и именно поэтому они называются отказоустойчивыми итератор. Таким образом, любые структурные изменения, сделанные в реальной коллекции, остаются незамеченными этими итераторами. Итератор CopyOnWriteArrayList является примером отказоустойчивого Iterator, итератор, написанный ConcurrentHashMap keySet, также является отказоустойчивым итератором и никогда не бросает ConcurrentModificationException в Java.

Источник: http://net-informations.com/Java/cJava/failfast.htm

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector