Java 为什么我会得到'IllegalMonitorStateException'异常
我有以下Java代码:Java 为什么我会得到'IllegalMonitorStateException'异常,java,multithreading,Java,Multithreading,我有以下Java代码: 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();
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");
}
}
}
输出是(不断变化——有时我甚至看不到打印的“结束”)
问题:
IllegalMonitorStateException
exception调用需要同步的操作而不保持监视器锁时,将引发非法监视器状态异常<代码>等待需要在同步块中调用 这个 基本上你需要做:
synchronized(this) {
wait();
}
这与中断机制无关。
IllegalMonitorStateException
在不保持监视器锁的情况下调用需要同步的操作时引发<代码>等待需要在同步块中调用
这个
基本上你需要做:
synchronized(this) {
wait();
}
这与中断机制无关。1。没有人打断你的思路。你根据什么证据得出结论?我收到的例外情况?“java.lang.IllegalMonitorStateException”建议:去阅读
Object#wait()
的Javadoc,也许你会得到一些线索。IllegalMonitorStateException
与线程中断有什么关系?也许你只是不区分“中断”和“中断”,但后者是该机制的正式名称,不包含在你的代码中。我编辑了我的问题,请检查。谢谢。没有人打断你的思路。你根据什么证据得出结论?我收到的例外情况?“java.lang.IllegalMonitorStateException”建议:去阅读Object#wait()
的Javadoc,也许你会得到一些线索。IllegalMonitorStateException
与线程中断有什么关系?也许你只是不区分“中断”和“中断”,但后者是该机制的正式名称,不包含在你的代码中。我编辑了我的问题,请检查。谢谢,我觉得自己像个傻瓜。我怎么能忘记这件事。我将删除我的问题。当然,我会接受你的回答。哦,我觉得自己像个傻瓜。我怎么能忘记这件事。我将删除我的问题。当然,我会接受你的回答。