生産者と消費者のシナリオを想像してみてください。スレッド A がエントリを生成し、他の複数のスレッドがそれらを消費します。
このために、一連のエントリを各コンシューマ スレッドに渡しています。
これを行うと、安価かどうかを自問しています(CPU使用率の意味ではプライマリ、メモリではセカンダリ):
- 各コンシューマー スレッドに の個別のインスタンスを提供します
HashMap
。Map
を 1 つのコンシューマーに渡した後、意志の新しいインスタンスMap
が作成され、次に生成されたエントリを次のスレッドに渡すために使用されます。
また
- シングルを使用し、コンシューマ スレッドごとに
ConcurrentHashMap
を作成し、をスレッドに渡した後、 - をクリアして、各 Iterator に基になる の独自のビューが含まれるようにします。Iterator
Iterator
Map
Map
どう思いますか?多かれ少なかれ一般的な答えは可能ですか?
それとも、エントリ数、スレッドなどのいくつかの変数に強く依存していますか?
編集:または、これらの種類の問題をより適切に解決できる他の種類のデータ構造を使用する必要がありますか?