No entiendo por qué obtengo una ConcurrentModificationException cuando repito este multimap
. Leí el siguiente entry, pero no estoy seguro de haber entendido todo. Traté de agregar un bloque sincronizado. Pero mi duda es con qué sincronizar y cuándo.Guava MultiMap y ConcurrentModificationException
El multimap
es un campo y ha creado así:
private Multimap<GenericEvent, Command> eventMultiMap =
Multimaps.synchronizedMultimap(HashMultimap.<GenericEvent, Command> create());
y se utiliza de esta manera:
eventMultiMap.put(event, command);
y como esto (he intentado sincronizar esta parte del mapa, pero sin éxito)
for (Entry<GenericEvent, Command> entry : eventMultiMap.entries()) {
if (entry.getValue().equals(command)) {
eventMultiMap.remove(entry.getKey(), entry.getValue());
nbRemoved++;
}
}
Véase también http://stackoverflow.com/questions/1675037/removing-items-from-a-collection-in -java-while-iterating-over-it – finnw