1

ConcurrentHashMap のエントリが増えると、再ハッシュが行われ、新しいハッシュ バケットが形成されます (16 から 32)。Q: ロック (最初は 16 個) も (32 個に) 増加しますか、それとも 16 個のロックが 32 個のハッシュバケット (2 個のハッシュ バケットごとに 1 個のロック) を参照するようになりますか? )

さらに質問: ConcurretnHashMap の実装を読みたいのですが、リンクを共有してください (Java Docs/code 以外)

4

1 に答える 1

1

a の並行性はConcurrentHashMap初期化時に設定され、変更されません。デフォルトの 16 を使用すると、ハッシュのサイズがどれだけ変更されても、常に 16 になります。

次の点に注意してください。

  • ConcurrentHashMap通常の よりもサイズ変更にコストがかかりHashMapます。サイズを変更する必要がないように、エントリの数を推測するようにしてください。

  • 並行性は、理想的なケースで同時にマップに書き込むことができるスレッドの数です。リーダーはハッシュをロックしないため、同時実行性を気にするときにそれらを数える必要はありません。

于 2013-03-17T04:31:25.397 に答える