Sobes.tech
Назад к вопросам
Junior — Middle
64

Какие методы можно использовать, чтобы избежать исключения ConcurrentModificationException при работе с коллекциями в многопоточной среде?

Ответ от нейросети

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
}