2

フェイルファスト反復子は、コレクションを反復処理します。反復中にコレクションが変更されると、例外が発生します。1 つのコレクションに対して反復が行われ、そのコピーに対して書き込み操作が行われるフェイルセーフには、反対のことが当てはまります。

誰かが ConcurrentSkipListSet にフェイルセーフがある方法を説明できますか? コレクションを変更するとき (CopyOnWrite クラスのように) コピーはありません。Iterator の一貫性が弱いため、読みました。ドキュメントを読みましたが、まだ理解できません。(しかし、同時実行におけるコードの可視性または事前発生関係が何であるかは知っています)。

私は初心者なので、論理的で覚えやすい説明を持っている人はいますか?

//例:

 ConcurrentSkipListSet<Integer> set = new ConcurrentSkipListSet<>();
      set.add(1);
      set.add(2);
      set.add(3);
      set.add(4);

      Iterator<Integer> iterator = set.iterator();
      while (iterator.hasNext()){
          System.out.println(iterator.next());
          set.remove(4);
      }

OUTPUT:
1
2
3

ここで ConcurrentException がスローされることを期待していました..助けてください:(

4

1 に答える 1