Sobes.tech
Junior — Middle

Kokias metodus galima naudoti, kad išvengtumėte išimties ConcurrentModificationException dirbant su kolekcijomis daugiagijų aplinkoje?

sobes.tech AI

Atsakymas iš AI

Kad išvengtumėte ConcurrentModificationException išimtį dirbant su kolekcijomis daugiagijame aplinkoje, galite naudoti šiuos metodus:

  • Naudokite saugias kelių gijų kolekcijas iš java.util.concurrent paketo, pvz., ConcurrentHashMap, CopyOnWriteArrayList.
  • Rankiniu būdu sinchronizuokite prieigą prie kolekcijos naudodami synchronized blokus ar kitus sinchronizacijos mechanizmus.
  • Naudokite iteratorius, kurie palaiko saugų modifikavimą, pvz., ListIterator sąrašams.
  • Kurkite kolekcijų kopijas iteracijai (pvz., naudodami new ArrayList<>(pirminisSąrašas)), kad išvengtumėte pirminės kolekcijos keitimo iteracijos metu.

CopyOnWriteArrayList pavyzdys:

CopyOnWriteArrayList<String> sąrašas = new CopyOnWriteArrayList<>();
sąrašas.add("elementas1");
for (String elementas : sąrašas) {
    sąrašas.add("elementas2"); // nesukels `ConcurrentModificationException`
}