CopyOnWriteArrayList
かなり多用しています。これは特に次の場合に当てはまります。
- スレッドは多くの読み取りを実行します
- スレッドは少し書き込みを実行します
ただし、いつ使用Collections.synchronizedList()
しますか
- スレッドは少し読み取りを実行します
- スレッドは多くの書き込みを実行します
これは、CopyOnWriteArrayList Java Docによると
基になる配列の新しいコピーを作成することによって、すべての変更操作 (追加、設定など) が実装される ArrayList のスレッドセーフなバリアント。
これは通常、コストがかかりすぎます...
に関しては、 を選択するConcurrentHashMap
際に同じロジックを適用できるかどうか疑問に思っていました。ConcurrentHashMap
Collections.synchronizedMap()
ConcurrentHashMap
書き込み操作を実行するたびに、基になるデータ構造の新しいコピーを作成しますか? 読み取り操作よりも書き込み操作の方が多い場合、Collections.synchronizedMap よりもパフォーマンスが低下しますか?