これを繰り返すと、なぜConcurrentModificationExceptionが発生するのかわかりませんmultimap
。次のエントリを読みましたが、すべてを理解したかどうかはわかりません。同期ブロックを追加しようとしました。しかし、私の疑問は、何といつ同期するかです。
はmultimap
フィールドであり、次のように作成されます。
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++;
}
}