如何区分等待(长时间超时)退出通知或超时的时间?

具有以下等待声明:

public final native void wait(long timeout) throws InterruptedException;

它可能会因InterruptedException或超时而退出,或者由于Notify /

NotifyAll方法是在另一个线程中调用而退出的,因此异常很容易捕获,但是…

有什么方法可以知道退出原因是超时还是通知?

这是一种可行的技巧,(尽管我不喜欢)

          long tBefore=System.currentTimeMillis();

wait(TIMEOUT);

if ((System.currentTimeMillis() - tBefore) > TIMEOUT)

{

//timeout

}

回答:

除非您提供一些其他代码,否则您无法区分两者。例如,添加添加ThreadLocalBooleantrue仅设置为的notify()

但是首先,您必须确保您的逻辑要求这种区分。

以上是 如何区分等待(长时间超时)退出通知或超时的时间? 的全部内容, 来源链接: utcz.com/qa/425834.html

回到顶部