ロックの取得に5分以上かかる場合は、ロックを取得して通知を送信する必要があるユースケースがあります。私たちはまだ永遠にロックを待つ必要があります。
リエントラントロックを使用していますが、lock.tryLock(5、TimeUnit.Minutes)は、5分後に出力されるため十分ではありません。
私たちが試したオプションは次のとおりです。
while(!lock.tryLock(5, TimeUnit.minutes)) {
// send notification
}
しかし、これはロックの公平性(ロックが要求された順序)を失う結果になると思います
誰かがそのようなユースケースに直面しましたか?はいの場合、それがどのように解決されたかを説明してください。
あるコンテキストでロックと対応する待機スレッドのメタ情報(ロック取得のために開始されたときなど)を維持する手作業のソリューションを使用したくない場合、別のスレッドがこのコンテキスト全体を継続的にポーリングして、待機している待機スレッドがあるかどうかを確認します5分以上。