java - java中的超时锁

标签 java locking timeout

我正在寻找可以帮助我实现以下模式(伪代码)的机制:

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/

相关文章:

java - 为什么会出现Permgen OutOfMemoryError?

java - 使用递归查找给定字符串中的最小字符

c# - 是否有任何理由锁定 new object() 以外的东西?

javascript - file_get_contents() 在 php 中超时

javascript - 超时或其他事件完成后触发事件一次

java - 配置 Tomcat 和非 EE Eclipse

在按钮事件调用之前调用 JavaScript 函数

c - 强制代码段在自定义 Linux 内核系统调用中具有原子性

linux - 多进程同步 - 比信号量更好的选择?

c# - 在 C# 中使用 SMTP 发送电子邮件偶尔会超时