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 (将#修改为@)