如何解决MultiMap removeAllConcurrentModificationExcepion
我正在与构建一个多图
public static Multimap<Timestampeddeviceid,ParsedPayload> multimap = Multimaps.synchronizedMultimap(
TreeMultimap.create(new Comparator<Timestampeddeviceid>() {
@Override
public int compare(Timestampeddeviceid o1,Timestampeddeviceid o2) {
return o1.compareto(o2);
}
},new Comparator<ParsedPayload>() {
@Override
public int compare(ParsedPayload o1,ParsedPayload o2) {
return o1.getCurrentPkgNum()-o2.getCurrentPkgNum();
}
}));
在线程-a中, 那么我想用
删除线程b中的指定键值Common.multimap.removeAll(deviceid);
Exception in thread "Thread-1" java.util.ConcurrentModificationException
at java.base/java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1208)
at java.base/java.util.TreeMap$KeyIterator.next(TreeMap.java:1262)
at com.google.common.collect.AbstractMapBasedMultimap$WrappedCollection$WrappedIterator.next(AbstractMapBasedMultimap.java:463)
at com.aier.waterserver.bootstrap.DeviceInfoInsertionTask.lambda$run$0(DeviceInfoInsertionTask.java:42)
at java.base/java.lang.Thread.run(Thread.java:834)
现在我很困惑,为什么即使使用了同步,也会发生此异常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。