黑马程序员技术交流社区

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

作者: 陈祥    时间: 2015-8-24 20:09
标题: sleep() 和 wait() 有什么区别?
sleep() 和 wait() 到底有什么区别?
作者: 再见_悟空    时间: 2015-8-24 20:20
wait()不会释放占有权
作者: shdosh    时间: 2015-8-24 20:40
都会使线程进入冻结状态,放弃执行资格,释放锁,sleep(),可以指定冻结时间,时间一到,线程会进入临时阻塞状态,获得执行资格,wait需要对应锁的notify()将线程唤醒进入临时阻塞状态,如果不唤醒就会一直冻结。

引用下,百度提问里的说明更详细:http://zhidao.baidu.com/link?url=yeSDjYamNqNRgAAhIRThQ7tZd9pd-hdtibtuiYKXna592Ii8156V0aUUH7inq6-joL9aCRRkAbS3up6tym3Iwq
作者: shdosh    时间: 2015-8-24 20:42
我的sleep说法有点错误,请看链接里,同仁的解答!
作者: 哈皮哈皮doge    时间: 2015-8-24 20:45
查看此链接,会有你想要的
http://bbs.itheima.com/thread-228951-1-1.html

作者: palysh    时间: 2015-8-24 21:26
sleep();是线程等待一定时间后自动会进入就绪状态参与竞争执行权限;
wait();必须要用notify()才能将线程唤醒进入就绪状态参与竞争执行权限
作者: cemabenteng    时间: 2015-8-24 21:39
我补充一句,这个问题一般情况下是面试必问的,问题很简单,总结一下就行了
作者: heima_cy    时间: 2015-8-24 21:42
哈哈哈 楼上大神真多  我得好好学了
作者: kingxiao    时间: 2015-8-24 21:43
有 wait()不会自动醒过来
作者: gincoo    时间: 2015-8-25 02:49
sleep()和wait()都会使得线程进入冻结状态。
sleep():是Thread类的功能。
在使用时必须指定时间。时间一到,自动解除冻结,进入就绪状态。会释放执行权,但不会释放锁。
wait():是Object类的功能。
在使用时可以指定时间,也可以不指定时间。如果不指定时间则需使用Object类notify()货notifyAll()进行唤醒。唤醒后解除冻结,进入就绪状态。会释放执行权,也会释放锁。
作者: 青春随了风    时间: 2015-8-25 10:33
楼上正解




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