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