黑马程序员技术交流社区

标题: 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