Sobes.tech
Junior — Middle

Jaké metody lze použít k zabránění výjimky ConcurrentModificationException při práci s kolekcemi ve vícevláknovém prostředí?

sobes.tech AI

Odpověď od AI

Abyste předešli výjimce ConcurrentModificationException při práci s kolekcemi v prostředí s více vlákny, můžete použít následující metody:

  • Používejte vlákny bezpečné kolekce z balíčku java.util.concurrent, například ConcurrentHashMap, CopyOnWriteArrayList.
  • Ručně synchronizujte přístup ke kolekci pomocí bloků synchronized nebo jiných synchronizačních mechanismů.
  • Používejte iterátory, které podporují bezpečné modifikace, například ListIterator pro seznamy.
  • Vytvářejte kopie kolekcí pro iteraci (například přes new ArrayList<>(původníSeznam)), abyste zabránili změnám původní kolekce během průchodu.

Příklad použití CopyOnWriteArrayList:

CopyOnWriteArrayList<String> seznam = new CopyOnWriteArrayList<>();
seznam.add("item1");
for (String item : seznam) {
    seznam.add("item2"); // nezpůsobí výjimku ConcurrentModificationException
}