Junior — Middle
Welke methoden kunnen worden gebruikt om de uitzondering ConcurrentModificationException te voorkomen bij het werken met collecties in een multithread-omgeving?
sobes.tech AI
Antwoord van 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
}