提问者:小点点

指定超时后同步的方法发布


我有一个很快的问题。我基本上有一个同步方法,当调用它时,它会执行一些任务。

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

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

如果有一种方法,可以有人请把一个样本代码。

先谢谢!


共1个答案

匿名用户

您可以使用锁而不是同步关键字

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

该方法如下所示

    public void synchronizedMethod() {
        if(!lock.tryLock(10, TimeUnit.SECONDS)){
            lock.forceUnlock();
        }
        doStuff();
        lock.unlock();
    }