次のシナリオで、きめの細かいロック メカニズムを作成しようとしています。
Cache内部に多くのシリアル化されたオブジェクトを含むデータ ストアがあります。それぞれCacheが特定の人、グループ、または会社に属しており、それぞれCacheを 4 つの方法のいずれかで変更できます: 作成、削除、削除、または挿入できます。aCacheが変更されている間、私はそれへのアクセスをブロックしたいと思います。それぞれは、便宜上、ディレクトリとファイル名、およびフル パスを格納Cacheするオブジェクトを使用して識別されます。CacheLocation
現在、処理中の現在のオブジェクトRequestQueueを保持するというクラス内で配列リストを使用しています。CacheLocation次に、別のスレッドが入ってくると、キューをチェックして、CacheLocation要求しているスレッドが既に使用されているかどうかを確認します。この場合、while ループを使用して、CacheLocationそこに置かれたリクエストによって削除されるまで、定期的に をチェックし続けます。
値CacheLocationに対するキーの HashMap を持つことはアイデアかもしれないと考えていました。BlockingQueueこれにより、BlockingQueueオブジェクトのセットが大きくなりますが、キューをかなりうまく管理できました。
この種の細粒度ロックを行うためのより良い方法はありますか?