关于java.lang.IllegalMonitorStateException
2016-07-24 17:36
429 查看
关于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(); } } }
相关文章推荐
- 多线程中的"断点"续传《notify()和wait()》
- Java多线程研究03-线程的基本操作(notify,notifyAll,interrupt,join,sleep)
- Spring框架运行机制(控制反转,依赖注入,面向切面AOP)
- Java 注解
- JavaSE 高级 第10节 字节数组输出流ByteArrayOutputStream
- Eclipse中使用maven构建SpringMVC
- java反射详解
- JavaSE 高级 第09节 字节数组输入流ByteArrayInputStream
- IO
- 深入理解Java的接口和抽象类
- Java三大框架之struts的验证框架(验证字段)
- 从头到尾打印链表
- JAVA数据库应用的一个小例子
- JavaSE 高级 第08节 文件输出流FileOutputStream
- java的设计模式——装饰模式
- java --内存溢出的问题
- Java线程笔记(一)
- [转]Java学习路线
- JavaSE 高级 第07节 文件输入流FileInputStream
- Spring+Hibernate+maven整合