黑马程序员技术交流社区

标题: wait与sleep的区别? [打印本页]

作者: ZhaoF    时间: 2015-1-15 21:22
标题: wait与sleep的区别?
wait与sleep的区别?
作者: 碎流    时间: 2015-1-15 21:31
wait是object中的方法.sleep是thread中的方法.
用在多线程中.wait会放弃cpu执行权,而sleep只是暂停执行,不会放弃cpu执行权.
所以,在多线程中,如果是要让线程放弃cpu执行权,让其他线程执行,就用wait.而如果只是让线程等待一段时间,就使用sleep;


作者: bowen-xiao    时间: 2015-1-15 22:07
多看下API,说不定里面有实例,先试着自己去探究。这样会更加有成效一点
作者: 赵嘉泷    时间: 2015-1-15 23:12
sleep:必须指定时间。不释放锁对象。
wait:可以指定时间,也可以不指定时间。释放锁对象。
作者: xiajie    时间: 2015-1-15 23:38
wait是等待其他进程执行完毕后再执行,而sleep是让线程休眠一段时间后再执行和其他的进程没有关系
作者: jojo    时间: 2015-1-16 00:54
wait 释放锁,sleep不释放锁,两个都会释放CPU执行权
作者: hanjun    时间: 2015-1-16 02:12
碎流 发表于 2015-1-15 21:31
wait是object中的方法.sleep是thread中的方法.
用在多线程中.wait会放弃cpu执行权,而sleep只是暂停执行,不 ...

参考了,对我的帮助很大。
作者: 油茶籽    时间: 2015-1-16 07:53
都放弃执行权,但是sleeo没释放锁对象,如果用的是同一个锁对象,其他程序是无法抢到执行权的
作者: 邓士林    时间: 2015-1-16 08:32
网上基本谈的都是自己的理解,都会有点偏差,去看源码的解释吧!
作者: 晨若兰曦    时间: 2015-1-16 10:49
sleep()方法属于Thread类中的,wait()方法属于Object类中的。
sleep()方法导致程序暂停执行指定的时间,让出cpu执行权给其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态,是可以自动恢复运行状态的,不会释放对象锁。
wait()会释放对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。




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