我在线程 A上有一个对象正在调用,而线程 Bwait()
上的另一个对象做了一些工作,然后调用线程 A的对象。线程 A 然后执行一些后处理。notify()
我的问题很简单:
synchronized(this)
{
while(!flag)
{
try
{
wait();
getLogger().info("No longer waiting");
}
catch (InterruptedException ie)
{
getLogger().info("Wait threw InterruptedException");
}
}
}
导致“不再等待”而不是“等待引发 InterruptedException”的信息消息。
我很困惑,因为这个(http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html#wait()):
抛出:
InterruptedException - 如果另一个线程在当前线程等待通知之前或期间中断了当前线程。抛出此异常时清除当前线程的中断状态。
为什么我会出现奇怪的行为?
谢谢。