黑马程序员技术交流社区

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

作者: Treasureと情    时间: 2012-2-27 20:25
标题: sleep() 和 wait() 有什么区别?
请问sleep() 和 wait() 有什么区别?
作者: 雷楚光    时间: 2012-2-27 20:28
sleep:
控制线程休眠,单位为毫秒
wait
在同步代码中可以使用锁对象的wait()方法让当前线程等待
作者: 冯兵兵    时间: 2012-2-27 20:46
wait 直到其他线程通过调用 notify 方法,或 notifyAll 方法通知在此对象的监视器上等待的线程才能醒过来;而sleep方法休眠一段时间过后,自己醒过来,不需要唤醒。
作者: 陈文涛    时间: 2012-2-27 21:17
sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)"醒来"的线程具有更高的优先级 (b)正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
作者: 刘峰    时间: 2012-2-27 21:36
功能差不多,都用来进行线程控制,他们最大本质的区别是:sleep()不释放同步锁,wait()释放同步锁.   
sleep是Thread类的静态方法。sleep的作用是让线程休眠制定的时间,在时间到达时恢复,也就是说sleep将在接到时间到达事件事恢复线程执行
作者: 闫玉泉    时间: 2012-2-27 22:52
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
作者: 袁野    时间: 2012-2-28 10:42
sleep() 是现成的休眠时间 wait()是让其等待需要程序员 手动去唤醒
作者: a504079589    时间: 2012-2-28 21:57
sleep()作用是休眠可以指定时间为多少毫秒 给定时间待时间到会自动运行 wait()作用是等待 需要用notift() notifyAll()唤醒一个或多个
就像毕老师的视频里举的例子 sleep(): 一哥们在往前跑 突然喊他:"那哥们给我睡100毫秒"等时间到了他会自动醒来 wait():如果跟那哥们说:"那哥们给我睡"他没有说睡多长时间,他就会一直睡下去,需要别别人唤醒
作者: xieguanxiong    时间: 2012-3-1 09:55
sleep()等规定的时间结束后,就会执行,而wait()需要唤醒
作者: 丁晓宇    时间: 2012-3-1 12:33
一个睡 , 一个等 字面意思~~ {:soso_e120:}
作者: jude    时间: 2012-3-1 16:15
sleep是线程类,不释放所对象,要指定睡眠时间;wait是Object类的方法,由notify方法来唤醒。




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