Guava MultiMap e ConcurrentModificationException [duplicado]
Esta pergunta já tem uma resposta aqui:
Iterando através de uma coleção, evitando ConcurrentModificationException ao remover objetos em um loop 3 respostasPor que é uma ConcurrentModificationException lançada e como depurá-la respostasEu não entendo por que recebo uma ConcurrentModificationException quando itero através destemultimap
. Eu li o seguinteentrad, mas não tenho certeza se entendi tudo. Eu tentei adicionar um bloco sincronizado. Mas minha dúvida é com o que sincronizar e quand
Omultimap
é um campo criado dessa forma:
private Multimap<GenericEvent, Command> eventMultiMap =
Multimaps.synchronizedMultimap(HashMultimap.<GenericEvent, Command> create());
e usado assim:
eventMultiMap.put(event, command);
e assim (tentei sincronizar esta parte no mapa, mas sem sucesso)
for (Entry<GenericEvent, Command> entry : eventMultiMap.entries()) {
if (entry.getValue().equals(command)) {
eventMultiMap.remove(entry.getKey(), entry.getValue());
nbRemoved++;
}
}