Zakaj se v Javi pojavlja izjema sočasnih sprememb?

Zakaj se v Javi pojavlja izjema sočasnih sprememb?
Zakaj se v Javi pojavlja izjema sočasnih sprememb?
Anonim

Izjema ConcurrentModificationException se pojavi, ko se skuša sočasno spremeniti predmet, če to ni dovoljeno. Ta izjema se običajno pojavi, ko delate z razredi zbirke Java. Na primer – Niti ni dovoljeno spreminjati zbirke, ko se kakšna druga nit ponavlja po njej.

Kako popravim izjemo sočasne spremembe?

Izjemi sočasnih sprememb se lahko izognemo tudi v okolju z enim navojem. Uporabimo lahko metodo odstranitve Iterator, da odstranimo predmet iz osnovnega predmeta zbirke. Toda v tem primeru lahko s seznama odstranite samo isti predmet in ne nobenega drugega predmeta.

Kako preprečite izjemo sočasnih sprememb na zemljevidu?

uporabite ConcurrentHashMap. nadaljujte z uporabo preprostega HashMapa, vendar na vsaki spremembi zgradite nov zemljevid in preklapljajte zemljevide v zakulisju (sinhroniziranje delovanja stikala ali uporaba AtomicReference)

Katera metoda iteratorja vrže izjemo za sočasno spreminjanje?

Če pri objektu pokličemo zaporedje metod, ki krši njegovo pogodbo, objekt vrže izjemo ConcurrentModificationException. Na primer: če med ponavljanjem zbirke neposredno poskušamo spremeniti to zbirko, bo dani fail-fast iterator vrgel to izjemo ConcurrentModificationException.

Kaj je izjema za sočasne spremembe pri prelivu sklada Java?

Če ena nit izda zaporedje klicev metode, ki krši pogodbo predmeta, lahko objek povzroči to izjemo. Na primer, če nit spremeni zbirko neposredno, medtem ko iterira zbirko s hitrim iteratorjem, bo iterator vrgel to izjemo.

Priporočena: