java.lang.IllegalMonitorStateException错误

charles27823349 2009-07-22 03:18:10
java.lang.IllegalMonitorStateException
违法的监控状态异常。当某个线程试图等待一个自己并不拥有的对象(O)的监控器或者通知其他线程等待该对象(O)的监控器时,抛出该异常。
这是网上的解释,我不是很明白,什么叫“自己并不拥有的对象”,我是在一个对象调用wait();在另一个对象调用notifyAll()
...全文
15257 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶小然 2012-07-31
  • 打赏
  • 举报
回复
先了解什么是等待池吧。什么对象调用了wait(),当然就要什么对象来notify()。wait()方法是把当前线程放进自己的等待池,自己指的是当前对象,用另外一个对象去notify,唤醒的只是它的等待池里面的等待线程,所以是不能够唤醒的。
xiaoqingtianwawa 2011-08-10
  • 打赏
  • 举报
回复
七楼是正解
gongmingwind 2010-06-02
  • 打赏
  • 举报
回复
7楼是正解
zhangzhiwu112984 2009-11-30
  • 打赏
  • 举报
回复
原因是:在对某个对象上调用wait()方法进行线程等待(让其他竞争执行该代码的线程上锁)时,没有对该对象执行同步操作。
故解决办法是:
synchronized (xxxx) {

xxxx.wait();
}

qidiancn 2009-10-16
  • 打赏
  • 举报
回复
哈哈就看到这儿不知道为什么
qidiancn 2009-10-16
  • 打赏
  • 举报
回复
网上抄的原题为注释那一句
public class Z {
public Z(){
Z z1=this;
//Z z2=this; //原题是这一句一直等待无输出
Integer z2 =new Integer(1);
synchronized (z2) {
try{
z1.wait();
System.out.println("Done Waiting");
}
catch(InterruptedException e){
System.out.println("InterruptedException");
}

catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
//System.out.println("otherException");
}

finally{
System.out.println("finally..");
}
}
}
public static void main(String[] args) {
@SuppressWarnings("unused")
Z z1=new Z();
}
}
/*当前输出
java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at test.Z.<init>(Z.java:13)
at test.Z.main(Z.java:34)
finally..


*/
don123987 2009-10-08
  • 打赏
  • 举报
回复
也遇到同样的问题
charles27823349 2009-07-28
  • 打赏
  • 举报
回复
顶一下
anhy 2009-07-23
  • 打赏
  • 举报
回复
如果不正确地管理wait/notify调用,应用程序可能会抛出IllegalMonitorStateException,例如,若不拥有对象的锁标记,而试图用wait/notify协调共享对象资源,应用程序将抛出IllegalMonitorStateException。

IllegalMonitorStateException意味着一个或多个资源可能不再处于一致状态,表示程序出现了严重问题。由于IllegalMonitorStateException是RuntimeException类型,因此它可能中断产生异常的线程。

charles27823349 2009-07-23
  • 打赏
  • 举报
回复
顶一下

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧