Junior — Middle
Milyen módszerek használhatók a ConcurrentModificationException kivétel elkerülésére több szálas környezetben történő kollekciók kezelése során?
sobes.tech MI
Válasz az MI-től
A ConcurrentModificationException kivédése érdekében több szálon történő kollekciókezelés során az alábbi módszereket alkalmazhatja:
- Használjon szálbiztos kollekciókat a
java.util.concurrentcsomagból, példáulConcurrentHashMap,CopyOnWriteArrayList. - Kézzel szinkronizálja a hozzáférést a kollekcióhoz
synchronizedblokkok vagy más szinkronizációs mechanizmusok segítségével. - Használjon olyan iterátorokat, amelyek támogatják a biztonságos módosítást, például
ListIteratorlistákhoz. - Hozzon létre másolatokat a kollekciókról az iterációhoz (például
new ArrayList<>(eredetiLista)), hogy elkerülje az eredeti kollekció módosítását az iteráció során.
CopyOnWriteArrayList példája:
CopyOnWriteArrayList<String> lista = new CopyOnWriteArrayList<>();
lista.add("item1");
for (String item : lista) {
lista.add("item2"); // nem fogja kiváltani a ConcurrentModificationException-t
}