Sobes.tech
Junior — Middle

Ce metode pot fi utilizate pentru a evita excepția ConcurrentModificationException atunci când lucrați cu colecții într-un mediu multi-thread?

sobes.tech AI

Răspuns de la AI

Pentru a evita excepția ConcurrentModificationException atunci când lucrați cu colecții într-un mediu multi-thread, puteți utiliza următoarele metode:

  • Utilizați colecții sigure pentru fire din pachetul java.util.concurrent, de exemplu, ConcurrentHashMap, CopyOnWriteArrayList.
  • Sincronizați accesul la colecție manual cu ajutorul blocurilor synchronized sau alte mecanisme de sincronizare.
  • Utilizați iteratori care suportă modificări sigure, de exemplu, ListIterator pentru liste.
  • Creați copii ale colecțiilor pentru iterație (de exemplu, prin new ArrayList<>(listaOriginală)), pentru a evita modificarea colecției originale în timpul iterației.

Exemplu de utilizare a CopyOnWriteArrayList:

CopyOnWriteArrayList<String> listă = new CopyOnWriteArrayList<>();
listă.add("item1");
for (String item : listă) {
    listă.add("item2"); // nu va cauza ConcurrentModificationException
}