黑马程序员技术交流社区

标题: sleep() 和 wait() 有什么区别? [打印本页]

作者: 松松2016    时间: 2016-9-25 18:41
标题: sleep() 和 wait() 有什么区别?
sleep() 和 wait() 有什么区别?
作者: lipeng518    时间: 2016-9-25 21:51
其实sleep不会释放锁,一直占用.而wait会释放锁资源,其他进程能够进行锁的代码块等等
作者: pdog    时间: 2016-9-26 01:52
另外就一个必须传入参数 ,一个看心情

一个是Thread的方法 一个是Object的方法
作者: 小东先森    时间: 2016-9-26 10:03
本帖最后由 小东先森 于 2016-9-26 10:07 编辑

sleep是在指定时间内休眠,wait是等待,等待别人唤醒,如果不唤醒就一直等。
作者: zhou987932946    时间: 2016-9-26 15:43
功能差不多,都用来进行线程控制,他们最大本质的区别是:sleep()不释放同步锁,wait()释放同步缩.  
还有用法的上的不同是:sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起.
作者: Jarc    时间: 2016-9-26 16:04
sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()不传参数,可以用notify()直接唤起.sleep不释放锁,.而wait释放锁,
作者: 请叫我院长    时间: 2016-9-26 17:21
sleep必须传参,指定的是睡眠的时间
wait可以传也可以不传参,传参指的是过多久才执行等待
不传参指的是立即等待
作者: tanghuiTom    时间: 2016-9-26 21:29
它们最大本质的区别是:sleep()不释放同步锁,wait()释放同步锁.   
还有用法的上的不同是:sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起.

sleep和wait的区别还有:
  1。这两个方法来自不同的类分别是Thread和Object
  2。最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
  3。wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在
    任何地方使用
   synchronized(x){
      x.notify()
     //或者wait()
   }
   4。sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常




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