Junior — Middle
Kādus metodus var izmantot, lai izvairītos no izņēmuma ConcurrentModificationException, strādājot ar kolekcijām daudzprocesu vidē?
sobes.tech AI
Atbilde no AI
Lai izvairītos no ConcurrentModificationException izņēmuma darbā ar kolekcijām daudzprocesu vidē, var izmantot šādus paņēmienus:
- Izmantojiet drošas daudzprocesu kolekcijas no
java.util.concurrentpakotnes, piemēram,ConcurrentHashMap,CopyOnWriteArrayList. - Rokasgrāmatā sinhronizējiet piekļuvi kolekcijai ar
synchronizedblokiem vai citiem sinhronizācijas mehānismiem. - Izmantojiet iteratorus, kas atbalsta drošu modifikāciju, piemēram,
ListIteratorsarakstiem. - Izveidojiet kolekciju kopijas iterācijai (piemēram, ar
new ArrayList<>(oriģinālaisSaraksts)), lai izvairītos no galvenās kolekcijas izmaiņām iterācijas laikā.
CopyOnWriteArrayList piemērs:
CopyOnWriteArrayList<String> saraksts = new CopyOnWriteArrayList<>();
saraksts.add("vienums1");
for (String vienums : saraksts) {
saraksts.add("vienums2"); // neradīs `ConcurrentModificationException`
}