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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 更上一层 中级黑马   /  2014-9-28 11:53  /  1236 人查看  /  5 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

sleep和wait()区别

5 个回复

倒序浏览
wait():需要唤醒操作(notify),可以规定时间也可以不规定,释放执行权,释放锁
sleep():不需要唤醒,自己会醒,必须规定时间,释放执行权,但是不释放锁
回复 使用道具 举报
sleep(_)是使该线程进入BLOCKED状态;
wait(_)是使该线程进入WAITING/WAITING_TIME状态.
处于BLOCKED状态的线程, 没有放弃资源锁;
而处于WAITING/WAITING_TIME状态的线程, 放弃了该资源锁.
这是最重要的区别.
回复 使用道具 举报
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不需要捕获异常。
回复 使用道具 举报 1 0
caixingke 发表于 2014-9-28 12:40
sleep(_)是使该线程进入BLOCKED状态;
wait(_)是使该线程进入WAITING/WAITING_TIME状态.
处于BLOCKED状态的 ...

嗯,虽然看不太懂,但是很受益,谢谢。
回复 使用道具 举报
楼上解释的都不错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马