指定超时后同步方法释放
Synchronized method release after a specified timeout
我有一个简短的问题。我基本上有一个同步方法,它在调用时执行一些任务。
我使用多线程,有时,当任务由一个线程执行时,线程挂起导致同步方法无限期地处于阻塞状态。这不允许下一个进程访问该块。
有没有一种方法可以设置一个计时器,在规定的时间(比如 60 秒)后同步方法被释放,这样其他线程仍然可以继续而不被阻塞?
如果有办法,谁能贴出示例代码。
提前致谢!
您可以使用锁代替 synchronized 关键字
为了能够强制解锁另一个线程拥有的锁,您可以使用以下实现
方法如下
public void synchronizedMethod() {
if(!lock.tryLock(10, TimeUnit.SECONDS)){
lock.forceUnlock();
}
doStuff();
lock.unlock();
}
我有一个简短的问题。我基本上有一个同步方法,它在调用时执行一些任务。
我使用多线程,有时,当任务由一个线程执行时,线程挂起导致同步方法无限期地处于阻塞状态。这不允许下一个进程访问该块。
有没有一种方法可以设置一个计时器,在规定的时间(比如 60 秒)后同步方法被释放,这样其他线程仍然可以继续而不被阻塞?
如果有办法,谁能贴出示例代码。
提前致谢!
您可以使用锁代替 synchronized 关键字
为了能够强制解锁另一个线程拥有的锁,您可以使用以下实现
方法如下
public void synchronizedMethod() {
if(!lock.tryLock(10, TimeUnit.SECONDS)){
lock.forceUnlock();
}
doStuff();
lock.unlock();
}