Sobes.tech
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.concurrent csomagból, például ConcurrentHashMap, CopyOnWriteArrayList.
  • Kézzel szinkronizálja a hozzáférést a kollekcióhoz synchronized blokkok 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 ListIterator listá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
}