黑马程序员技术交流社区
标题:
sleep()和wait()的区别?
[打印本页]
作者:
JTANISME
时间:
2014-9-21 08:51
标题:
sleep()和wait()的区别?
sleep()和wait()的区别?
作者:
Imp_x
时间:
2014-9-21 08:56
sleep到时间自己醒
wait没人叫不会醒→_→
作者:
hike_2008
时间:
2014-9-21 10:28
sleep和wait的区别 * 1,sleep方法必须指定参数,wait方法可以指定参数也可以不指定,如果指定参数,根据参数的时间值之后等待,如果不指定参数直接等待 * 2,sleep方法在同步函数或者同步代码块中不释放锁对象,wait方法只能用在同步函数或同步代码块中,释放锁
作者:
liaorubei
时间:
2014-9-21 10:43
sheep(int) 方法里面一般要求有一个参数,指定线程休眠时间,时间到了线程会继续执行,并且在线程休眠的时候不会释放锁的执行权(如果有的话),
wait()方法是Object对象就具有的方法,功能是让线程休眠,直到有notify(),或nofifyAll()执行之后才会被别的对象唤醒,
并且在休眠的时候,释放锁的执行权.
作者:
定格在永远
时间:
2014-9-21 12:32
sleep是线程被调用时,占着cpu去睡觉,其他线程不能占用cpu,os认为该线程正在工作,不会让出系统资源,wait是进入等待池等待,让出系统资源,其他线程可以占用cpu,一般wait不会加时间限制,因为如果wait的线程运行资源不够,再出来也没用,要等待其他线程调用notifyall方法唤醒等待池中的所有线程,才会在进入就绪序列等待os分配系统资源, sleep是静态方法,是谁掉的谁去睡觉,就算是在main线程里调用了线程b的sleep方法,实际上还是main去睡觉,想让线程b去睡觉要在b的代码中掉sleep
作者:
LFW
时间:
2014-9-21 16:53
定格在永远 发表于 2014-9-21 12:32
sleep是线程被调用时,占着cpu去睡觉,其他线程不能占用cpu,os认为该线程正在工作,不会让出系统资源,wai ...
说的不对。。。拿着锁/释放锁,跟占着cpu不是同一回事。。。。
作者:
LFW
时间:
2014-9-21 17:00
你去上厕所,睡着了就是sleep,拿着锁,睡醒了你继续干你想干的事,在你sleep时别人不能进厕所。你在厕所,被wait,就别人可以上厕所,因为wait时你把锁给释放了,而且你一旦wait,正常情况下都要别人去notify叫醒你,或者是给你一板砖interrupt(当然板砖了就受伤了——抛中断异常)。大概就这么回事,建议再温习毕老师的那一段视频。
作者:
a986875894
时间:
2014-9-21 21:25
sleep就是睡眠 到点就醒了 wait要有程序唤醒才能醒
作者:
moon1993zs
时间:
2014-9-21 21:38
sleep 方法是Thread类的
wait 方法是Object类
sleep 不放锁
wait 放锁,唤醒后,重新获取锁才能运行
作者:
┣┫流枫
时间:
2014-9-21 23:31
sleep是你拿着钥匙把门关了 然后去睡觉,占有房间,虽然不干啥, wait 是你把钥匙交出啦,你从房间出来,让给别人 呵呵
作者:
不服™け你咬我
时间:
2014-9-22 00:10
7楼的有意思,好理解
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2