我有對象線程A正在調用wait()
同時線程B另一個對象然後做一些工作要求線程A的對象的notify()
。線程A然後執行一些後處理。Java的等待()不拋出InterruptedException的
我的問題很簡單:在「不再等待」而不是INFO消息
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的 - 如果另一個線程之前或在當前線程在等待中斷的 當前線程一個 通知。拋出此異常時,當前線程的中斷狀態將被清除 。
爲什麼我會得到奇怪的行爲?
謝謝。
調用對象的另一個線程「notify」不符合中斷的要求。 – sje397 2011-05-19 06:18:02