Guava MultiMap and ConcurrentModificationException [duplikat]

To pytanie ma już odpowiedź tutaj:

Iterowanie przez kolekcję, unikając ConcurrentModificationException podczas usuwania obiektów w pętli 23 odpowiedziDlaczego zgłoszony został wyjątek ConcurrentModificationException i jak go debugować 6 odpowiedzi

Nie rozumiem, dlaczego otrzymuję wyjątek ConcurrentModificationException podczas iteracji przez tomultimap. Przeczytałem następującewejści, ale nie jestem pewien, czy wszystko zrozumiałem. Próbowałem dodać zsynchronizowany blok. Ale mam wątpliwości, z czym i kiedy synchronizować.

Themultimap jest polem utworzonym w ten sposób:

private Multimap<GenericEvent, Command> eventMultiMap =   
   Multimaps.synchronizedMultimap(HashMultimap.<GenericEvent, Command> create());

i używane w ten sposób:

eventMultiMap.put(event, command);

i tak (próbowałem zsynchronizować tę część na mapie, ale bezskutecznie)

for (Entry<GenericEvent, Command> entry : eventMultiMap.entries()) {
    if (entry.getValue().equals(command)) {
        eventMultiMap.remove(entry.getKey(), entry.getValue());
        nbRemoved++;
    }
}

questionAnswers(5)

yourAnswerToTheQuestion