0

ConcurrentSkipListSet繰り返しながら要素を削除して追加するのは安全ですか?

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

ここでe、とanotherEは提供されたコンパレータによって等しくなります。

4

1 に答える 1

2

はい、安全です。Javaドキュメントから:

挿入、削除、およびアクセス操作は、複数のスレッドによって同時に安全に実行されます。イテレータは弱一貫性があり、イテレータの作成時または作成後のある時点でのセットの状態を反映する要素を返します。これらはConcurrentModificationExceptionをスローせず、他の操作と同時に続行する場合があります。

于 2012-07-16T16:52:00.483 に答える