我正在寻找可以帮助我实现以下模式(伪代码)的机制:
TimeoutLock lock = new TimeoutLock();
while(condition) {
prepare();
lock.enter(); //cannot enter until specified lock timeout elapses
execute();
lock.lockFor(2 minutes);
finish();
}
我需要限制对执行的调用不超过某个指定的时间间隔(例如,两分钟),但我不想阻止准备或者如果不需要则执行。我想知道 java 是否支持任何锁定机制,这种机制会在一段时间后“消失”。要求是,当然,lock 不会通过,即使它是由同一个线程输入的,它锁定了它。
我正在考虑涉及信号量和TimerTask的解决方案,或者自己计算截止日期并睡了多余的时间,但我想知道是否已经有这样的东西。
谢谢
最佳答案
不需要特殊的类:
synchronized(lock) {
execute();
Thread.sleep(120 * 1000)
}
关于java - java中的超时锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13518120/