黑马程序员技术交流社区

标题: 关于sleep和wait [打印本页]

作者: 陶圣虎    时间: 2014-8-7 16:26
标题: 关于sleep和wait
本帖最后由 陶圣虎 于 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不都是使线程进入到冻结状态吗?
作者: rolling-stone    时间: 2014-8-7 16:38
sleep和wait的区别就是,一个醒来不释放锁,一个醒来释放锁。你那个wait醒来把锁也会释放掉。
作者: 戒风    时间: 2014-8-7 17:42
sleep不释放锁,wait释放锁
作者: felixzr    时间: 2014-8-7 18:31
楼上已经说出了原因,这就是Sleep和Wait的区别




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2