【初心者】Java質問・相談スレッド59【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0296デフォルトの名無しさん
NGNGIteratorは別のもの。元になったCollectionがコピーされるかどうかはIteratorの実装次第。
ただしIterate中に構造変化が起こった場合は
>つまり、いくつかのスレッドが自分用のiteratorを得て、ぐるぐる回してもOKなのか?
NG.
ただし、CopyOnWriteArrayListなどはIteratorが生きている間もとの構造を維持する。
複数スレッドから使いたければCollections.synchronizedList()で同期化する。
同期化されていれば途中で構造が変更されたときにきちんとConcurrentModificationExceptionがスローされる。
>2:static変数であるオブジェクトの中で宣言されたコレクションクラス(包含関係になっている)から
>要素を取り出して(HashSetでもArrayListでもいいです)、得た要素に対して変更を加えても、コレクションの中の
>要素には変更が反映されません。
同期化されたコレクションなら構造が反映されれば「安全に」ConcurrentModificationExceptionがスローされる。
■ このスレッドは過去ログ倉庫に格納されています