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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhousuo28 中级黑马   /  2015-5-29 21:26  /  311 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

IllegalMonitorStateException 抛出一个异常
   出现的原因:两个方法导致 wait  notify 线程等待,唤醒单个线程
  方法的使用,必须依赖对象锁,在没有锁的情况下,不允许使用等待与唤醒方法
wait notify 等待和唤醒功能,都是拥有锁的线程
使用的同步代码块用的锁是 Student 对象s ,无论生产线程还是消费线程,锁都是对象s
持有对象s这把锁上的等待和唤醒


  多线程操作的方法中、等待wait和唤醒方法notify为什么没有出现在Thread类中
  而出现在了Object类中?
保证线程数据安全,使用同步锁,锁对象是任意对象,方法等待与唤醒必须有锁的支持,
方法必须定义在Object类中,JAVA中的所有对象均以有此方法

   线程操作方法中,sleep 和 wait 有什么区别
   sleep方法是Thread类的静态方法
   wait方法是Object类的非静态方法
   
   sleep方法,到时间自己醒来,继续执行 ,
   wait方法,等待其他线程唤醒后才执行 ,
        
   sleep 不会释放锁
   wait  释放锁,被唤醒后,从新获取锁,才执行

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马