Proč dochází v jazyce Java k výjimce souběžných úprav?

Obsah:

Proč dochází v jazyce Java k výjimce souběžných úprav?
Proč dochází v jazyce Java k výjimce souběžných úprav?
Anonim

Výjimka ConcurrentModificationException nastane, když objekt se pokouší upravit současně, když to není přípustné. Tato výjimka obvykle nastává, když člověk pracuje s třídami Java Collection. Například – Není přípustné, aby vlákno upravovalo sbírku, když nad ní prochází nějaké jiné vlákno.

Jak opravím výjimku souběžných úprav?

Výjimce souběžné modifikace se můžeme také vyhnout v prostředí s jedním vláknem. K odstranění objektu ze základního objektu kolekce můžeme použít metodu remove Iterator. Ale v tomto případě můžete ze seznamu odstranit pouze stejný objekt a ne žádný jiný objekt.

Jak zabráníte výjimce souběžných úprav na mapě?

použít ConcurrentHashMap. pokračujte v používání jednoduché HashMap, ale vytvořte novou mapu na každé modifikaci a přepínejte mapy v zákulisí (synchronizace operace přepínače nebo použití AtomicReference)

Která metoda iterátoru vyvolá výjimku souběžných úprav?

Pokud vyvoláme sekvenci metod na objektu, který porušuje jeho smlouvu, pak objekt vyvolá ConcurrentModificationException. Například: pokud se při iteraci kolekce přímo pokoušíme upravit tuto kolekci, pak daný fail-fast iterator vyvolá tuto ConcurrentModificationException.

Jaká je výjimka souběžných úprav při přetečení zásobníku Java?

Pokud jedno vlákno vydá sekvenci vyvolání metody, která porušuje smlouvu objektu, objekt může vyvolat tuto výjimku. Pokud například vlákno upravuje kolekci přímo, zatímco iteruje kolekci pomocí iterátoru rychlého při selhání, iterátor vyvolá tuto výjimku.

Doporučuje: