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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陶圣虎 中级黑马   /  2014-8-7 16:26  /  1079 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陶圣虎 于 2014-8-7 21:01 编辑
  1.         synchronized(obj)
  2.                 {
  3.                         if(ticket>0)
  4.                         {
  5.                                 try                        
  6.                                 {
  7.                                         Thread.sleep(10);
  8.                                 }
  9.                                 catch (Exception e)
  10.                                 {
  11.                                 }
  12.                                 System.out.println(Thread.currentThread().getName()+"ticket="+ ticket--);
  13.                         }

  14.                 }
  15.                         synchronized(r)
  16.                         {
  17.                                 if(!r.b)
  18.                                         try{r.wait();}catch(Exception e){}
  19.                                 System.out.println(r.name+"-----"+r.sex);
  20.                                 r.b = false;
  21.                                 r.notify();
  22.                         }
复制代码
       为什么上面的锁住了,线程sleep了其他线程不可以进.
        下面的锁住了,线程wait,其余的线程可以进。
sleep和wait不都是使线程进入到冻结状态吗?

3 个回复

倒序浏览
sleep和wait的区别就是,一个醒来不释放锁,一个醒来释放锁。你那个wait醒来把锁也会释放掉。
回复 使用道具 举报
戒风 来自手机 中级黑马 2014-8-7 17:42:40
藤椅
sleep不释放锁,wait释放锁
回复 使用道具 举报
楼上已经说出了原因,这就是Sleep和Wait的区别
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马