次のパターン (疑似コード) を実装するのに役立つメカニズムを探しています。
TimeoutLock lock = new TimeoutLock();
while(condition) {
prepare();
lock.enter(); //cannot enter until specified lock timeout elapses
execute();
lock.lockFor(2 minutes);
finish();
}
実行するための呼び出しが指定された間隔 (たとえば 2 分) よりも頻繁に発生しないように制限する必要がありますが、必要でない場合は準備または実行をブロックしたくありません。Java が、しばらくすると「消える」ロック機構をサポートしているかどうか疑問に思っています。もちろん、lock をロックしたのと同じスレッドによって入力されたとしても、lock が通過しないことが要件です。
セマフォとTimerTaskで解決したり、デッドラインを自分で計算して無駄な時間を寝かせたりと考えていたのですが、このようなものはすでにあるのでしょうか。
ありがとう