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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈祥 中级黑马   /  2015-8-24 20:09  /  395 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

点评

10楼不谢  发表于 2015-8-25 02:52

12 个回复

倒序浏览
wait()不会释放占有权
回复 使用道具 举报
都会使线程进入冻结状态,放弃执行资格,释放锁,sleep(),可以指定冻结时间,时间一到,线程会进入临时阻塞状态,获得执行资格,wait需要对应锁的notify()将线程唤醒进入临时阻塞状态,如果不唤醒就会一直冻结。

引用下,百度提问里的说明更详细:http://zhidao.baidu.com/link?url=yeSDjYamNqNRgAAhIRThQ7tZd9pd-hdtibtuiYKXna592Ii8156V0aUUH7inq6-joL9aCRRkAbS3up6tym3Iwq

点评

只有wait()才会释放锁,sleep()不会  发表于 2015-8-25 02:45
回复 使用道具 举报
我的sleep说法有点错误,请看链接里,同仁的解答!
回复 使用道具 举报
查看此链接,会有你想要的
http://bbs.itheima.com/thread-228951-1-1.html
回复 使用道具 举报
sleep();是线程等待一定时间后自动会进入就绪状态参与竞争执行权限;
wait();必须要用notify()才能将线程唤醒进入就绪状态参与竞争执行权限
回复 使用道具 举报
我补充一句,这个问题一般情况下是面试必问的,问题很简单,总结一下就行了
回复 使用道具 举报
哈哈哈 楼上大神真多  我得好好学了
回复 使用道具 举报
有 wait()不会自动醒过来
回复 使用道具 举报
sleep()和wait()都会使得线程进入冻结状态。
sleep():是Thread类的功能。
在使用时必须指定时间。时间一到,自动解除冻结,进入就绪状态。会释放执行权,但不会释放锁。
wait():是Object类的功能。
在使用时可以指定时间,也可以不指定时间。如果不指定时间则需使用Object类notify()货notifyAll()进行唤醒。唤醒后解除冻结,进入就绪状态。会释放执行权,也会释放锁。
回复 使用道具 举报
青春随了风 来自手机 中级黑马 2015-8-25 10:33:25
11#
楼上正解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马