在JDK6.0或其他库中是否有任何Concurrent LinkedHashSet?

Koe*_*err 5 java java.util.concurrent

我的代码抛出异常:

java.util.ConcurrentModificationException
        at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:761)
        at java.util.LinkedList$ListItr.next(LinkedList.java:696)
        at java.util.AbstractCollection.addAll(AbstractCollection.java:305)
        at java.util.LinkedHashSet.<init>(LinkedHashSet.java:152)
        ...
Run Code Online (Sandbox Code Playgroud)

我想要ConcurrentLinkedHashSet修理它,

但我只找到ConcurrentSkipListSetjava.util.concurrent,这TreeSet不是LinkedHashSet

进入JDK6.0的任何简易方法ConcurrentLinkedHashSet

感谢帮助 :)

Voo*_*Voo 10

ConcurrentModificationException与您正在考虑的形式的并发性无关.这只是意味着在迭代Collection时,有人(可能是你自己的代码 - 经常发生的事情;))正在改变它,即添加/删除一些值.

确保您使用Iterator从集合中删除值,而不是集合本身.

编辑:如果真正的另一个线程同时访问Collection,那么从标准库获得的弱同步无论如何都是无用的,因为你必须在整个操作期间阻塞Collection而不仅仅是一个add /去掉!就是这样的

synchronize(collection) {
   // do stuff here
}
Run Code Online (Sandbox Code Playgroud)