指定的超时后同步方法释放

我有一个简短的问题。我基本上有一个同步方法,当需要时它可以完成一些任务。

我使用多线程,有时,当一个线程执行任务时,线程挂起,导致同步方法无限期地处于阻塞状态。这不允许下一个进程访问该块。

有没有一种方法可以设置计时器,在所述时间(例如60秒)后释放同步方法,以便其他线程仍然可以继续而不被阻塞?

如果有办法,请有人提供示例代码。

谢谢!

pengmeizeng 回答:指定的超时后同步方法释放

您可以使用锁来代替 synchronized 关键字

要能够强制解锁另一个线程拥有的锁,可以使用以下实现https://stackoverflow.com/a/16492269/5313017

方法类似于以下

    public void synchronizedMethod() {
        if(!lock.tryLock(10,TimeUnit.SECONDS)){
            lock.forceUnlock();
        }
        doStuff();
        lock.unlock();
    }
本文链接:https://www.f2er.com/2975217.html

大家都在问