CopyOnWriteArrayListはどのような状況に適しているのでしょうか?[重複]する
質問
について勉強しています。 CopyOnWriteArrayList クラスについて学んでいます。
- 新しい配列をコピーする目的は何ですか?
- 他のスレッドが配列を読むためでしょうか?
ですから、もしシステムが高い並行性を持ち、スレッドの動作のほとんどが 書き込みではなく読み込みであるような場合には、配列の読み出しに
CopyOnWriteArrayList
.
どのように解決するのですか?
この リンク :
CopyOnWriteArrayList
は、Java 5 Concurrency API で導入された並列コレクションクラスで、人気のある同類の
ConcurrentHashMap
と共に、Java 5 Concurrency API で導入されました。
CopyOnWriteArrayList
のようにListのインタフェースを実装しています。
ArrayList
,
Vector
と
LinkedList
というように、スレッドセーフなコレクションであり、Vectorや他のスレッドセーフなコレクションクラスとは少し異なる方法でスレッドセーフを実現します。
名前が示すように、CopyOnWriteArrayListは変異のたびに基礎となるArrayListのコピーを作成します。 ArrayList は、add や set などの突然変異を起こすたびに、そのコピーを作成します。通常 CopyOnWriteArrayList は非常に高価です。 というのは、書き込み操作のたびに高価な配列のコピーが発生するからです。 の場合、非常に効率的です。 がある場合、非常に効率的です。 例えば、あなたはほとんど ArrayListを反復し、あまり頻繁に変更しない場合など。
CopyOnWriteArrayListのイテレータはフェイルセーフで、ConcurrentModificationExceptionを投げません。 ConcurrentModificationException たとえ、基礎となる が変更されたとしても、ConcurrentModificationExceptionをスローしません。 イテレータは、ArrayListの別々のコピーで動作しているからです。その結果、すべての の更新は、Iterator では利用できません。
最新のバージョンを取得するために、次のような新しい読み込みを行います。
list.iterator();
とはいえ、このコレクションを頻繁に更新すると、パフォーマンスが低下します。もしあなたが
CopyOnWriteArrayList
をソートしようとすると、リストが
UnsupportedOperationException
を投げることがわかります (ソートはコレクションに対して N 回 set を実行します)。この読み取りは、90%以上の読み取りを行う場合にのみ使用する必要があります。
関連
-
Zipファイルの圧縮・解凍にantを使用する
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み] なぜJavaのVector(およびStack)クラスは時代遅れ、または非推奨とされているのですか?
-
[解決済み] Javaにおける "final class "の意味とは?
-
[解決済み] ConcurrentHashMapとCollections.synchronizedMap(Map)の違いは何ですか?
-
[解決済み】Javaの「ダブルブレース初期化」の効率化?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン