Sobes.tech
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.concurrent pakotnes, piemēram, ConcurrentHashMap, CopyOnWriteArrayList.
  • Rokasgrāmatā sinhronizējiet piekļuvi kolekcijai ar synchronized blokiem vai citiem sinhronizācijas mehānismiem.
  • Izmantojiet iteratorus, kas atbalsta drošu modifikāciju, piemēram, ListIterator sarakstiem.
  • 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`
}