Back to questions
Junior — Middle
63
Какие методы можно использовать, чтобы избежать исключения ConcurrentModificationException при работе с коллекциями в многопоточной среде?
Answer from AI
sobes.tech AI
Чтобы избежать исключения ConcurrentModificationException при работе с коллекциями в многопоточной среде, можно использовать следующие методы:
- Использовать потокобезопасные коллекции из пакета
java.util.concurrent, например,ConcurrentHashMap,CopyOnWriteArrayList. - Синхронизировать доступ к коллекции вручную с помощью блоков
synchronizedили других механизмов синхронизации. - Использовать итераторы, поддерживающие безопасную модификацию, например,
ListIteratorдля списков. - Создавать копии коллекций для итерации (например, через
new ArrayList<>(originalList)), чтобы избежать изменения исходной коллекции во время обхода.
Пример использования CopyOnWriteArrayList:
CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
list.add("item1");
for (String item : list) {
list.add("item2"); // не вызовет ConcurrentModificationException
}