2017-01-24 1 views
0

私は3つのHashMapを含むシングルトンクラスを持っています。各ハッシュマップはプールのように動作します。私はそこに未使用のエントリを置く。同時実行性の変更例外が発生したため、同期化を実装する予定でした。私の問題は、すべて同じロックを使用すると、パフォーマンスの問題が発生する可能性があるということです。なぜなら、そのプールのエントリを作成するときに、それはWebサービス呼び出しによって行われるからです。私は各ハッシュマップが同時に実行されないようにする必要があるので、3つのオブジェクトロックを作成しても問題ありませんか?シングルトンクラスの異なるロック

+0

"ハッシュマップごとに3つのオブジェクトロックを作成できますか?" - 大丈夫ですが必要です。 – Fildor

+0

@Fildor単一の共有ロックで何が問題になっていますか? – shmosel

+0

@EldonHipolito必要に応じて、実際のマップオブジェクトをロックとして使用できます。 – shmosel

答えて

2

ConcurrentHashMapをお勧めします。

表は内部的にパーティション化されており、競合なしに指定された数の同時更新を許可しようとしています。

concurrencyLevelパラメータを使用してパフォーマンスを調整してください。

+1

チューニングは、ほとんどの状況では必ずしも必要ではありません@Alexey。私は何百ものCHM実装を書いたことがあり、何も調整する必要はありませんでした。 – Gray

関連する問題