Guava MultiMap y ConcurrentModificationException [duplicado]
Esta pregunta ya tiene una respuesta aquí:
Interando a través de una Colección, evitando ConcurrentModificationException al eliminar objetos en un bucle 23 respuestas ¿Por qué se lanza una ConcurrentModificationException y cómo depurarla? 6 respuestas No entiendo por qué obtengo una ConcurrentModificationException cuando itero a través de estamultimap
. Leo el siguienteentrad, pero no estoy seguro de haber entendido todo. Intenté agregar un bloque sincronizado. Pero mi duda es con qué sincronizar y cuándo.
Losmultimap
es un campo y se creó así:
private Multimap<GenericEvent, Command> eventMultiMap =
Multimaps.synchronizedMultimap(HashMultimap.<GenericEvent, Command> create());
y se usa así:
eventMultiMap.put(event, command);
y así (intenté sincronizar esta parte en el mapa, pero sin éxito)
for (Entry<GenericEvent, Command> entry : eventMultiMap.entries()) {
if (entry.getValue().equals(command)) {
eventMultiMap.remove(entry.getKey(), entry.getValue());
nbRemoved++;
}
}