Sobes.tech
Junior — Middle

Koje metode možete koristiti da biste izbegli izuzetak ConcurrentModificationException prilikom rada sa kolekcijama u višestrukom okruženju?

sobes.tech АИ

Одговор од АИ

Da biste izbegli izuzetak ConcurrentModificationException prilikom rada sa kolekcijama u višestrukom okruženju, možete koristiti sledeće metode:

  • Koristite kolekcije bezbedne za niti iz paketa java.util.concurrent, na primer, ConcurrentHashMap, CopyOnWriteArrayList.
  • Ručno sinhronizujte pristup kolekciji pomoću blokova synchronized ili drugih mehanizama sinhronizacije.
  • Koristite iteratorе koji podržavaju sigurnu modifikaciju, na primer, ListIterator za liste.
  • Kreirajte kopije kolekcija za iteraciju (na primer, pomoću new ArrayList<>(originalList)), kako biste izbegli promene originalne kolekcije tokom prolaska.

Primer korišćenja CopyOnWriteArrayList:

CopyOnWriteArrayList<String> lista = new CopyOnWriteArrayList<>();
lista.add("item1");
for (String item : lista) {
    lista.add("item2"); // neće izazvati ConcurrentModificationException
}