0

ConcurrentSkipListSet在迭代它时删除和添加元素是否安全:

ConcurrentSkipListSet<Element> set = new ConcurrentSkipListSet<Element>(myComparator);
for(Element e : set)
{
   if(condition)
   {
      set.remove(e);
      set.add(anotherE);
   }
}

其中eanotherE由提供的比较器相等。

4

1 回答 1

2

是的,它是安全的。来自java 文档

插入、删除和访问操作由多个线程安全地并发执行。迭代器是弱一致的,返回的元素反映了在迭代器创建时或之后的某个时间点的集合状态。它们不会抛出 ConcurrentModificationException,并且可以与其他操作同时进行。

于 2012-07-16T16:52:00.483 回答