ConcurrentModificationException tapahtuu, kun objektia yritetään muokata samanaikaisesti, kun se ei ole sallittua. Tämä poikkeus tulee yleensä silloin, kun työskentelet Java Collection -luokkien kanssa. Esimerkiksi - Ei ole sallittua, että säiettä muokkaa kokoelmaa, kun jokin toinen säiettä iteroi sen yli.
Kuinka korjaan samanaikaisen muokkauksen poikkeuksen?
Voimme myös välttää Concurrent Modification Exception -poikkeuksen yhdessä kierteitetyssä ympäristössä. Voimme käyttää Iteratorin poistomenetelmää objektin poistamiseksi alla olevasta kokoelmaobjektista. Mutta tässä tapauksessa voit poistaa luettelosta vain saman objektin etkä mitään muuta objektia.
Kuinka estät samanaikaisen muokkauspoikkeuksen kartalla?
käytä ConcurrentHashMap. Jatka yksinkertaisen HashMapin käyttöä, mutta rakenna jokaiselle muutokselle uusi kartta ja vaihda karttoja kulissien taakse (synkronoi kytkintoiminto tai käytä AtomicReferencea)
Mikä iteraattorimenetelmä heittää samanaikaisen muokkauksen poikkeuksen?
Jos kutsumme menetelmäsarjan objektiin, joka rikkoo sen sopimusta, objekti heittää ConcurrentModificationExceptionin. Esimerkki: jos kokoelmaa iteroitaessa yritämme suoraan muokata kyseistä kokoelmaa, annettu fail-fast iterator heittää tämän ConcurrentModificationExceptionin.
Mikä on samanaikaisen muokkauksen poikkeus Java-pinon ylivuodossa?
Jos yksi säie lähettää menetelmäkutsujen sarjan, joka rikkoo objektin sopimusta, objekti voi tehdä tämän poikkeuksen. Jos säie esimerkiksi muokkaa kokoelmaa suoraan, kun se iteroi kokoelmaa nopealla iteraattorilla, iteraattori heittää tämän poikkeuksen.