2016-10-26 1 views
-3

キャッシングに使用できるマップを提案してください。高度に複数のスレッド用のJavaマップキャッシュ

私のユースケースは、put mapを同期したいが、get mapが同期されていない、非常にマルチスレッドのサーバーです。

私の期待は:putが発生した場合、即時取得には最新の更新値が必要です。

私たちのユースケースでは、現在行っているput中にマップ全体に同期させる必要はないかもしれません。同じ値がロードされた場合にのみ同期されるべきです。

+2

マルチスレッドプログラミングでは、共有オブジェクトへの**すべての**アクセスは同期する必要があります。単に同期書き込みを行うだけでは正しくありません。 –

答えて

1

ConcurrentHashMapは、複数のスレッドから同時に安全に使用できるので、ここで正しい答えです。

また、ライブラリ依存関係を追加することができれば、Guava's Cacheがあなたが探しているものかもしれません。

何がないがしなければならないことは、すべての操作に適切な同期せずにHashMapまたは他のスレッド危険な構造を使用して読み込み、変異するの両方です。これは単にスレッドセーフではなく、terrible waysで失敗する可能性があります。

関連する問題