Sobes.tech
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
}