2017-08-26 11 views
0

繰り返し処理中にArrayListで削除操作を実行することができますなぜ反復処理中に同じ操作CopyOnWriteArrayListを実行できないのですか?反復処理中にCopyOnWriteArrayListに要素を削除できないのはなぜですか?

なぜこのプロセスでUnsupportedOperationExceptionが発生しますか?

+0

問題が発生した正確なコードを表示し、例外スタックトレース –

+2

を投稿してください:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6 -b14/java/util/concurrent/CopyOnWriteArrayList.java#1036 –

+2

とその*理由はおそらく次のようなものです:https://stackoverflow.com/a/28112444/180100 –

答えて

1

CopyOnWriteArrayListのすべてのミューテータは(ETC削除、追加...)ただ、単に干渉の可能性を排除するために、アレイのスナップショットとIteratorを作成するドキュメントを新しい配列とiterator()を作成している:

スナップショットスタイルのイテレーターメソッドは、イテレーターが作成された時点の配列 の状態への参照を使用します。この配列は決してイテレータの存続期間中に変更されないため、 は不可能であり、反復子は不可能であり、イテレータは ConcurrentModificationExceptionをスローしないことが保証されています。

関連する問題