¿Por qué se produce una excepción de modificación concurrente en Java?

Tabla de contenido:

¿Por qué se produce una excepción de modificación concurrente en Java?
¿Por qué se produce una excepción de modificación concurrente en Java?
Anonim

La ConcurrentModificationException ocurre cuando un objeto se intenta modificar simultáneamente cuando no está permitido. Esta excepción suele presentarse cuando se trabaja con clases de la Colección Java. Por ejemplo: no está permitido que un subproceso modifique una colección cuando otro subproceso está iterando sobre él.

¿Cómo soluciono la excepción de modificación simultánea?

También podemos evitar la excepción de modificación concurrente en un entorno de un solo subproceso. Podemos usar el método de eliminación de Iterator para eliminar el objeto del objeto de colección subyacente. Pero en este caso, solo puede eliminar el mismo objeto y ningún otro objeto de la lista.

¿Cómo se evita la excepción de modificación simultánea en un mapa?

use ConcurrentHashMap. siga usando HashMap simple, pero construya un nuevo mapa en cada modificación y cambie de mapa detrás de escena (sincronizando la operación de cambio o usando AtomicReference)

¿Qué método de iterador genera una excepción de modificación concurrente?

Si invocamos una secuencia de métodos en un objeto que viola su contrato, entonces el objeto lanza ConcurrentModificationException. Por ejemplo: si al iterar sobre la colección, tratamos directamente de modificar esa colección, entonces el iterador fallido dado generará esta ConcurrentModificationException.

¿Qué es la excepción de modificación concurrente en el desbordamiento de pila de Java?

Si un solo subproceso emite una secuencia de invocaciones de métodos que violan el contrato de un objeto, el objeto puede generar esta excepción. Por ejemplo, si un subproceso modifica una colección directamente mientras itera sobre la colección con un iterador rápido, el iterador lanzará esta excepción.

Recomendado: