ConcurrentHashMap のエントリが増えると、再ハッシュが行われ、新しいハッシュ バケットが形成されます (16 から 32)。Q: ロック (最初は 16 個) も (32 個に) 増加しますか、それとも 16 個のロックが 32 個のハッシュバケット (2 個のハッシュ バケットごとに 1 個のロック) を参照するようになりますか? )
さらに質問: ConcurretnHashMap の実装を読みたいのですが、リンクを共有してください (Java Docs/code 以外)
ConcurrentHashMap のエントリが増えると、再ハッシュが行われ、新しいハッシュ バケットが形成されます (16 から 32)。Q: ロック (最初は 16 個) も (32 個に) 増加しますか、それとも 16 個のロックが 32 個のハッシュバケット (2 個のハッシュ バケットごとに 1 個のロック) を参照するようになりますか? )
さらに質問: ConcurretnHashMap の実装を読みたいのですが、リンクを共有してください (Java Docs/code 以外)
a の並行性はConcurrentHashMap
初期化時に設定され、変更されません。デフォルトの 16 を使用すると、ハッシュのサイズがどれだけ変更されても、常に 16 になります。
次の点に注意してください。
ConcurrentHashMap
通常の よりもサイズ変更にコストがかかりHashMap
ます。サイズを変更する必要がないように、エントリの数を推測するようにしてください。
並行性は、理想的なケースで同時にマップに書き込むことができるスレッドの数です。リーダーはハッシュをロックしないため、同時実行性を気にするときにそれらを数える必要はありません。