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říkladConcurrentHashMap,CopyOnWriteArrayList. - Ručně synchronizujte přístup ke kolekci pomocí bloků
synchronizednebo jiných synchronizačních mechanismů. - Používejte iterátory, které podporují bezpečné modifikace, například
ListIteratorpro 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
}