A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何招俊 中级黑马   /  2012-2-15 15:05  /  2283 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

线程中wait()和sleep()方法有什么区别?

评分

参与人数 1技术分 +1 收起 理由
admin + 1 这个问题很多人问过,提问前可以先在论坛查.

查看全部评分

5 个回复

倒序浏览
sleep()是 冻结一段时间,时间到了就活了。wait()是冻结一段时间,收到一个符合的参数之后才活过来。收不到就永远停在那里了。
回复 使用道具 举报
wait()需要被notify()唤醒
而sleep(long millis)是等待括号内的毫秒 后自动唤醒
回复 使用道具 举报
admin 程序媛 2012-2-15 15:53:48
板凳
刚来黑马论坛,没什么经验,继续努力!

帮顶一个.....  {:soso_e112:}
回复 使用道具 举报
本帖最后由 李杨 于 2012-2-15 16:23 编辑

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

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

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

这样可以保证你线程执行正确。
回复 使用道具 举报
李杨 发表于 2012-2-15 16:22
一个是自己睡觉自己醒,另一个是自己睡觉,让别人叫醒。。

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

不错。这个我没去复习,都有点忘记了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马