A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 成都校区 金牌黑马   /  2012-3-21 15:10  /  4484 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

子线程wait(1000)的时候抛出异常
java.lang.IllegalMonitorStateException: object not locked by thread before wait()

这是怎么回事,应该怎样解决?

5 个回复

倒序浏览
源码能发过来
回复 使用道具 举报
这个异常是wait里必须处理的异常,你要么try catch或throws

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
抛出的异常表明某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程。
回复 使用道具 举报
同意马云的回答
回复 使用道具 举报
你调用的是Object的wait()方法;
public final void wait() throws InterruptedException{}
IllegalMonitorStateException - 如果当前线程不是此对象监视器的所有者。
抛出的异常表明某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程。
因此你必须添加一个同步代码块,或者把方法改成同步方法

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马