Java でブロックしないように、オブジェクトがロックされている (同期されている)かどうかをどのように判断しますか?
しかし、解決策がわからないという問題があります。
私の Web アプリケーションでは、データ コンテナーを更新するプロセスがあり、時間がかかることがあります。リフレッシュは時間間隔で強制的に行われます。もちろん、1 つの更新がまだコンテナー上で動作している場合、別の更新はできません (コンテナー内のデータが破損しないようにするため)。
バックグラウンド スレッドを使用してコンテナーを更新したい。複数のバックグラウンド ワーカーが複数のコンテナーで同時に作業できます (ユーザー セッションごとに異なるワーカーがあり、ユーザー セッションごとにコンテナー内のデータが異なる場合があります)。
もちろんできますsynchronize(myContainer)
ワーカーで、他のワーカーが現在この特定のコンテナーを更新していないことを強制します。しかし、コンテナで作業しているワーカーがいるかどうかを確認し、作業している場合は終了したいと思います。また、コンテナのコードを変更したくないので、コンテナクラス内に ReentrantLock を追加してロックしたくありません。
そのため、ワーカーにはインスタンスがMyContainer
あり、他のワーカーが現在このコンテナー インスタンスを更新しているかどうかを判断したいと考えています。
それを達成する方法はありますか?