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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 松松2016 中级黑马   /  2016-9-25 18:41  /  1081 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

sleep() 和 wait() 有什么区别?

7 个回复

正序浏览
它们最大本质的区别是: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不需要捕获异常
回复 使用道具 举报
sleep必须传参,指定的是睡眠的时间
wait可以传也可以不传参,传参指的是过多久才执行等待
不传参指的是立即等待
回复 使用道具 举报
sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()不传参数,可以用notify()直接唤起.sleep不释放锁,.而wait释放锁,
回复 使用道具 举报
功能差不多,都用来进行线程控制,他们最大本质的区别是:sleep()不释放同步锁,wait()释放同步缩.  
还有用法的上的不同是:sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起.
回复 使用道具 举报
本帖最后由 小东先森 于 2016-9-26 10:07 编辑

sleep是在指定时间内休眠,wait是等待,等待别人唤醒,如果不唤醒就一直等。
回复 使用道具 举报
另外就一个必须传入参数 ,一个看心情

一个是Thread的方法 一个是Object的方法
回复 使用道具 举报
其实sleep不会释放锁,一直占用.而wait会释放锁资源,其他进程能够进行锁的代码块等等
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马