在迭代它时向ConcurrentSkipListSet
删除和添加元素是否安全:
ConcurrentSkipListSet<Element> set = new ConcurrentSkipListSet<Element>(myComparator);
for(Element e : set)
{
if(condition)
{
set.remove(e);
set.add(anotherE);
}
}
其中e
和anotherE
等于提供的比较器。
答案 0 :(得分:2)
是的,这是安全的。来自java docs:
插入,删除和访问操作可以安全地并发执行 通过多个线程。迭代器是弱一致的,返回 在某个时刻或之后反映集合状态的元素 创建迭代器。他们不扔 ConcurrentModificationException,可以同时进行 其他行动。