黑马程序员技术交流社区

标题: 线程中的休眠问题 [打印本页]

作者: 何招俊    时间: 2012-2-15 15:05
标题: 线程中的休眠问题
线程中wait()和sleep()方法有什么区别?

作者: 吕猛    时间: 2012-2-15 15:22
sleep()是 冻结一段时间,时间到了就活了。wait()是冻结一段时间,收到一个符合的参数之后才活过来。收不到就永远停在那里了。
作者: 秦碧    时间: 2012-2-15 15:23
wait()需要被notify()唤醒
而sleep(long millis)是等待括号内的毫秒 后自动唤醒
作者: admin    时间: 2012-2-15 15:53
刚来黑马论坛,没什么经验,继续努力!

帮顶一个.....  {:soso_e112:}
作者: 李杨    时间: 2012-2-15 16:22
本帖最后由 李杨 于 2012-2-15 16:23 编辑

一个是自己睡觉自己醒,另一个是自己睡觉,让别人叫醒。。

sleep方法让线程睡眠,但是不会释放自己的锁,不会释放执行权。
wait方法让线程等待,会释放自己的锁,释放执行权。

需要注意的是:当你在多线程中使用wait方法等待的时候,要依据条件来判断,同样为了防止虚假线程的出现,你的条件判断要用while来循环判断,而别if判断。

这样可以保证你线程执行正确。
作者: 黄锦成    时间: 2012-2-15 16:48
李杨 发表于 2012-2-15 16:22
一个是自己睡觉自己醒,另一个是自己睡觉,让别人叫醒。。

sleep方法让线程睡眠,但是不会释放自己的锁, ...

不错。这个我没去复习,都有点忘记了




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