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.concurrentpaketo, pvz.,ConcurrentHashMap,CopyOnWriteArrayList. - Rankiniu būdu sinchronizuokite prieigą prie kolekcijos naudodami
synchronizedblokus ar kitus sinchronizacijos mechanizmus. - Naudokite iteratorius, kurie palaiko saugų modifikavimą, pvz.,
ListIteratorsą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`
}