スレッド Aにオブジェクトがあり、スレッド Bwait()
の別のオブジェクトが何らかの作業を行ってから、スレッド Aのオブジェクトの. その後、スレッド A はいくつかの後処理を実行します。notify()
私の問題はかなり簡単です:
synchronized(this)
{
while(!flag)
{
try
{
wait();
getLogger().info("No longer waiting");
}
catch (InterruptedException ie)
{
getLogger().info("Wait threw InterruptedException");
}
}
}
「Wait throwed InterruptedException」ではなく、「もう待機していません」という情報メッセージが表示されます。
このため、私は混乱しています(http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html#wait()):
スロー:
InterruptedException - 現在のスレッドが通知を待機する前または待機中に、別のスレッドが現在のスレッドに割り込んだ場合。この例外がスローされると、現在のスレッドの中断ステータスがクリアされます。
奇妙な振る舞いをするのはなぜですか?
ありがとう。