我有以下的Java代碼:爲什麼我收到`IllegalMonitorStateException`例外
public class Lean extends Thread
{
public static void main(String args[]) throws InterruptedException
{
Lean lean = new Lean();
System.out.println("starting");
lean.start();
lean.join();
System.out.println("end");
}
public void run()
{
try
{
System.out.println("waiting");
wait(20000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
finally
{
System.out.println("waiting finished");
}
}
}
輸出是(不斷變化的 - 有時我甚至不看「結束」印刷)
starting
waiting
waiting finished
end
Exception in thread "Thread-1" java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at Lean.run(Lean.java:18)
問題:
爲什麼我得到
IllegalMonitorStateException
異常?爲什麼thread.join不能按預期的方式工作? (我不看的見「結束」有時印刷)
1.沒有人打斷你的線程。你有什麼證據得出結論? –
我收到的例外情況? 「java.lang.IllegalMonitorStateException」 –
建議:閱讀Object#wait()的Javadoc,也許你會得到一個線索。 –