以下的
另外,
wait()
调用总是抛出InterruptedException。并不是其他线程在中断它。调用和异常被抛出之间没有延迟。我已经添加了日志来检查调用和异常捕获之间的时间差。另外,
Thread.sleep(long)
也会得到相同的结果。public synchronized void retryConnection()
{
// . .. some code
try
{
wait();
}
catch(InterruptedException e)
{
log(Level.SEVERE, "InterruptedException " , e);
}
// . .. some code
}
我尝试了以下方法:
在新线程中调用此方法。然后它可以正常工作。这是一种等待和通知机制。
将相同的代码再次放置,即在捕获异常后再次等待。然后它会正确地等待。
观察:当调用来自netty(服务器)线程时,它会失败,但如果来自其他Java线程,则可以正常工作。因此我的问题是:是否有任何机制或线程状态,在该状态下调用wait()
或Thread.sleep()
是被禁止的,并且如果调用它们则会抛出异常?
我已经检查了中断标志,它始终为“false”。