Prečo sa v jave vyskytuje výnimka súbežných úprav?

Obsah:

Prečo sa v jave vyskytuje výnimka súbežných úprav?
Prečo sa v jave vyskytuje výnimka súbežných úprav?
Anonim

Výnimka ConcurrentModificationException nastane, keď sa objekt pokúsite upraviť súčasne, keď to nie je prípustné. Táto výnimka zvyčajne prichádza, keď sa pracuje s triedami Java Collection. Napríklad – Nie je dovolené, aby vlákno upravovalo kolekciu, keď cez ňu prechádza iné vlákno.

Ako opravím výnimku súbežných úprav?

Výnimke súbežnej úpravy sa môžeme vyhnúť aj v prostredí s jedným vláknom. Na odstránenie objektu zo základného objektu kolekcie môžeme použiť metódu odstránenia Iterátora. V tomto prípade však môžete zo zoznamu odstrániť iba ten istý objekt a nie žiadny iný objekt.

Ako zabránite výnimke súbežnej úpravy na mape?

use ConcurrentHashMap. pokračujte v používaní jednoduchej HashMap, ale pri každej modifikácii vytvorte novú mapu a prepínajte mapy v zákulisí (synchronizácia operácie prepínača alebo použitie AtomicReference)

Ktorá metóda iterátora vyvolá výnimku súbežnej úpravy?

Ak vyvoláme postupnosť metód na objekte, ktorý porušuje jeho zmluvu, potom objekt vyvolá výnimku ConcurrentModificationException. Napríklad: ak sa pri iterácii kolekcie priamo pokúšame upraviť túto kolekciu, potom daný fail-fast iterator vyvolá túto ConcurrentModificationException.

Aká je výnimka súbežných úprav pri pretečení zásobníka Java?

Ak jedno vlákno vydá sekvenciu vyvolania metódy, ktorá porušuje zmluvu objektu, objekt môže vyvolať túto výnimku. Ak napríklad vlákno upraví kolekciu priamo počas iterácie kolekcie pomocou iterátora rýchleho pri zlyhaní, iterátor vyvolá túto výnimku.

Odporúča: