Miért fordul elő párhuzamos módosítási kivétel a java-ban?

Miért fordul elő párhuzamos módosítási kivétel a java-ban?
Miért fordul elő párhuzamos módosítási kivétel a java-ban?
Anonim

A ConcurrentModificationException akkor fordul elő, amikor egy objektumot egyidejűleg próbálnak módosítani, amikor az nem megengedett. Ez a kivétel általában akkor következik be, amikor az ember Java Collection osztályokkal dolgozik. Például - Nem megengedett, hogy egy szál módosítson egy gyűjteményt, amikor egy másik szál iterál rajta.

Hogyan javíthatom ki az egyidejű módosítási kivételt?

A párhuzamos módosítási kivételt is elkerülhetjük egyetlen szálas környezetben. Használhatjuk az Iterator eltávolítási módszerét, hogy eltávolítsuk az objektumot az alapul szolgáló gyűjteményobjektumból. Ebben az esetben azonban csak ugyanazt az objektumot távolíthatja el a listáról, más objektumokat nem.

Hogyan akadályozhatja meg az egyidejű módosítási kivételeket a térképen?

használjon ConcurrentHashMap. folytasd az egyszerű HashMap használatát, de építs új térképet minden módosításra, és válts a színfalak mögött a térképeket (a kapcsolóművelet szinkronizálása vagy az AtomicReference használata)

Az iterátor melyik metódusa ad egyidejű módosítási kivételt?

Ha metódussorozatot hívunk meg egy objektumon, amely megsérti a szerződését, akkor az objektum ConcurrentModificationExceptiont dob. Például: ha a gyűjtemény iterálása közben közvetlenül megpróbáljuk módosítani a gyűjteményt, akkor a megadott fail-fast iterator ezt a ConcurrentModificationException kivételt fogja dobni.

Mi az egyidejű módosítási kivétel a Java veremtúlcsordulásban?

Ha egyetlen szál olyan metódushívási sorozatot ad ki, amely sérti egy objektum szerződését, az objektum ezt a kivételt dobhatja. Például, ha egy szál közvetlenül módosít egy gyűjteményt, miközben az iterál a gyűjtemény felett egy hibamentes iterátorral, az iterátor ezt a kivételt fogja dobni.

Ajánlott: