Per què es produeix una excepció de modificació simultània a Java?

Taula de continguts:

Per què es produeix una excepció de modificació simultània a Java?
Per què es produeix una excepció de modificació simultània a Java?
Anonim

L'excepció de modificació simultània es produeix quan s'intenta modificar simultàniament un objecte quan no és permès. Aquesta excepció sol venir quan es treballa amb classes de Java Collection. Per exemple: no es permet que un fil modifiqui una col·lecció quan un altre fil hi està iterant.

Com soluciono l'excepció de modificació simultània?

També podem evitar l'excepció de modificació simultània en un entorn d'un sol fil. Podem utilitzar el mètode d'eliminació d'Iterator per eliminar l'objecte de l'objecte de col·lecció subjacent. Però en aquest cas, només podeu eliminar el mateix objecte i no cap altre objecte de la llista.

Com eviteu l'excepció de modificació simultània en un mapa?

utilitza ConcurrentHashMap. continueu utilitzant HashMap senzill, però creeu un mapa nou a cada modificació i canvieu els mapes darrere de les escenes (sincronitzant l'operació de commutació o utilitzant AtomicReference)

Quin mètode d'iterador genera una excepció de modificació concurrent?

Si invoquem una seqüència de mètodes en un objecte que incompleix el seu contracte, aleshores l'objecte llança l'excepció ConcurrentModificationException. Per exemple: si mentre iterem sobre la col·lecció, intentem modificar-la directament, aleshores el iterador ràpid d'error generarà aquesta excepció de modificació simultània.

Quina és l'excepció de modificació simultània al desbordament de la pila de Java?

Si un únic fil emet una seqüència d'invocacions de mètodes que infringeix el contracte d'un objecte, el objecte potllançar aquesta excepció. Per exemple, si un fil modifica una col·lecció directament mentre està iterant sobre la col·lecció amb un iterador ràpid, l'iterador llançarà aquesta excepció.

Recomanat: