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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王维波 黑马帝   /  2011-11-2 21:20  /  1776 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

sleep()和wait()的区别在哪里?

该贴已经同步到 保持常态0616的微博

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

4 个回复

倒序浏览
sleep() 使当前线程暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是如果有Synchronized同步块,其他线程仍然不同访问共享数据
wait方法用于协调多个线程对共享数据的存取,所以必须在Synchronized语句块内使用,wait()方法使当前线程暂停执行并释放对象锁标志

评分

参与人数 1技术分 +1 收起 理由
admin + 1 答题有奖,继续努力!

查看全部评分

回复 使用道具 举报
.一个对象在sleep()的时候是有时间限制的,一个对象在wai()t的时候没有时间限制,会让对象一直暂停下去,当有其他对象去调用他的notify或者调用全局的notifyAll的时候才会开始继续执行。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 答题有奖,继续努力!

查看全部评分

回复 使用道具 举报
本质上sleep是自己睡自己醒(时间),wait是自己睡,别人叫醒

评分

参与人数 1技术分 +1 收起 理由
admin + 1 答题有奖,继续努力!

查看全部评分

回复 使用道具 举报
1.wait()和sleep()这两个方法来自不同的类分别是Thread和Object.
2.最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法.
3.wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用.
4.sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常.

评分

参与人数 1技术分 +1 收起 理由
admin + 1 答题有奖,继续努力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马