2015-04-05 3 views
0

Такие классы, как ConcurrentHashmap, не будут выбрасывать это исключение; Зачем? Что они делают внутри, чтобы избежать этого исключения? Как я могу предотвратить это для всех классов в параллельном API?Почему исключение параллельной модификации не будет выбрано в параллельном пакете?

+0

Прочтите исходный код. Вы можете найти его с помощью Google; например поиск «ConcurrentHashmap source» –

+0

Эти классы предназначены для правильной работы в присутствии одновременной модификации; это их все. Там нет никакой конкретной вещи, которую они делают внутренне; вам придется посмотреть на их исходный код. –

ответ

0

Реализация параллельных коллекций Итераторы не бросают ConcurentModificationException, потому что это требование API, см. Java.util.concurrent package javadocs. Различные реализации используют разные методы для достижения этого, например, создание моментального снимка состояния коллекции. Вы можете увидеть исходный код JDK для деталей реализации.