微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MultiMap removeAllConcurrentModificationExcepion

如何解决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 举报,一经查实,本站将立刻删除。