有了这个等待声明:
public final native void wait(long timeout) throws InterruptedException;
该程序可能会因为InterruptedException或超时而退出,或者因为另一个线程调用了Notify/NotifyAll方法,Exception很容易捕获,但是...
有没有办法知道退出的原因是超时还是通知?
编辑:
这是一种可能会起作用的棘手方式(尽管我不喜欢它)
long tBefore=System.currentTimeMillis();
wait(TIMEOUT);
if ((System.currentTimeMillis() - tBefore) > TIMEOUT)
{
//timeout
}
Semaphore
更适合;Semaphore.tryAcquire(long timeout, TimeUnit unit)
如果超时了会返回false
。 - Santoshif ((System.currentTimeMillis() - tBefore) >= TIMEOUT)
- Filomat