Junior — Middle
Jakie metody można zastosować, aby uniknąć wyjątku ConcurrentModificationException podczas pracy z kolekcjami w środowisku wielowątkowym?
sobes.tech AI
Odpowiedź od AI
Aby uniknąć wyjątku ConcurrentModificationException podczas pracy z kolekcjami w środowisku wielowątkowym, można użyć następujących metod:
- Używać bezpiecznych dla wątków kolekcji z pakietu
java.util.concurrent, np.ConcurrentHashMap,CopyOnWriteArrayList. - Ręcznie synchronizować dostęp do kolekcji za pomocą bloków
synchronizedlub innych mechanizmów synchronizacji. - Używać iteratorów obsługujących bezpieczne modyfikacje, np.
ListIteratordla list. - Tworzyć kopie kolekcji do iteracji (np. przez
new ArrayList<>(oryginalnaLista)), aby uniknąć modyfikacji oryginalnej kolekcji podczas iteracji.
Przykład użycia CopyOnWriteArrayList:
CopyOnWriteArrayList<String> lista = new CopyOnWriteArrayList<>();
lista.add("item1");
for (String item : lista) {
lista.add("item2"); // nie spowoduje ConcurrentModificationException
}