2011-07-24 10 views
4

セグメントの数を増やして再ハッシュしますか? CHMを再ハッシュする時に並行性レベルが変化するのか?JavaでConcurrentHashMapを再ハッシュするとセグメント数が増えますか?

CHMでエントリの数が増え、同じセグメントにアクセスするスレッドが増え、より高いレベルの同時実行性が必要な場合があるため、Javaでこの現象が発生するのはなぜですか?

EDIT:セグメントの増加の機能が指定されていれば、すべてのセグメントのロックが必要になると思います。その理由は何ですか?

+0

「再ハッシング」とはどういう意味ですか? –

+0

短い答え:いいえ、本当に並行ハッシュマップが必要な場合は、他の場所を探すのが良いでしょう。 – bestsss

答えて

0

セグメントの数は、ConcurrentHashMapのサイズが大きくなるにつれて変化しません。コレクションにアクセスできるスレッドの数は、マップにアクセスするアクティブなスレッドの数ほど重要ではありません。 4つのコアを持っている場合は、マップにアクセスして何もしなくても、最大4つです。これは極端な例です。

実際にマップにアクセスするスレッドは1つ以下です。マップを使用してセグメントにアクセスするときに2〜4スレッドがアクセスすることがあります。

関連する問題