您的位置:首页 > 编程语言 > Java开发

关于java.lang.IllegalMonitorStateException

2015-09-17 11:54 495 查看
关于IllegalMonitorStateException异常:


api中的解释


public class IllegalMonitorStateExceptionextends RuntimeException




抛出的异常表明某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程。 








从以下版本开始: 


JDK1.0 


另请参见: 


Object.notify(), Object.notifyAll(), Object.wait(), Object.wait(long), Object.wait(long, int), 序列化表格

 也就是当前的线程不是此对象监视器的所有者。也就是要在当前线程锁定对象,才能用锁定的对象此行这些方法,需要用到synchronized ,锁定什么对象就用什么对象来执行
notify()
notifyAll()
,
wait()
wait(long)
wait(long, int)操作,否则就会报IllegalMonitorStateException异常。

例如 :
exapmle 1,锁定方法所属的实例对象:
public synchronized void method(){

    //然后就可以调用:this.notify()...

    //或者直接调用notify()...

}
exapmle 2,锁定方法所属的实例的Class:
public Class Test{

 public static synchronized void method(){

    //然后调用:Test.class.notify()...

 }

}
exapmle 3,锁定其他对象:
public Class Test{

public Object lock = new Object();

 public static void method(){

    synchronized (lock) {

     //需要调用 lock.notify();

    } 

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: