Guava MultiMap и ConcurrentModificationException [дубликаты]
На этот вопрос уже есть ответ:
Итерация по Коллекции, исключение ConcurrentModificationException при удалении объектов в цикле 23 ответа Почему выброшено исключение ConcurrentModificationException и как его отладить 6 ответов Я не понимаю, почему я получаю исключение ConcurrentModificationException, когда я повторяю этоmultimap
. Я прочитал следующее Запись, но я не уверен, понял ли я все это. Я попытался добавить синхронизированный блок. Но я сомневаюсь, что синхронизировать и когда.
Themultimap
- это поле, созданное следующим образом:
private Multimap<GenericEvent, Command> eventMultiMap =
Multimaps.synchronizedMultimap(HashMultimap.<GenericEvent, Command> create());
и использовал так:
eventMultiMap.put(event, command);
и так (я пытался синхронизировать эту часть на карте, но безуспешно)
for (Entry<GenericEvent, Command> entry : eventMultiMap.entries()) {
if (entry.getValue().equals(command)) {
eventMultiMap.remove(entry.getKey(), entry.getValue());
nbRemoved++;
}
}