黑马程序员技术交流社区

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

作者: 更上一层    时间: 2014-9-28 11:53
标题: sleep和wait()区别
sleep和wait()区别

作者: 雨下阳光    时间: 2014-9-28 12:13
wait():需要唤醒操作(notify),可以规定时间也可以不规定,释放执行权,释放锁
sleep():不需要唤醒,自己会醒,必须规定时间,释放执行权,但是不释放锁
作者: zuochbd    时间: 2014-9-28 12:40
sleep(_)是使该线程进入BLOCKED状态;
wait(_)是使该线程进入WAITING/WAITING_TIME状态.
处于BLOCKED状态的线程, 没有放弃资源锁;
而处于WAITING/WAITING_TIME状态的线程, 放弃了该资源锁.
这是最重要的区别.
作者: 杨佳名    时间: 2014-9-28 23:47
sleep和wait的区别
        总共有4点区别:
        1、这两个方法来自不同的类sleep来自Thread类,wait来自Object类。
        sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码        中        调用sleep。
        2、sleep方法不释放锁,也就是系统资源;wait方法释放了锁,使得其他线程可以同步控制块或者方法。
        3、wait,notify/notifyAll是成对出现的,他们只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用。
        4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常。
作者: 苏乞儿    时间: 2014-9-29 00:30
caixingke 发表于 2014-9-28 12:40
sleep(_)是使该线程进入BLOCKED状态;
wait(_)是使该线程进入WAITING/WAITING_TIME状态.
处于BLOCKED状态的 ...

嗯,虽然看不太懂,但是很受益,谢谢。
作者: 戏言丶    时间: 2014-9-29 00:43
楼上解释的都不错




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