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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 向小辰 初级黑马   /  2014-7-26 16:48  /  767 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

wait和sleep的区别,求解释

2 个回复

倒序浏览
印象中有两点:
1. wait是让当前线程在某个对象的等待池中等待,当前线程在wait前必须拿到了这个对象的锁,否则将抛出IllegalMonitorStateException。由于任何对象都可以充当锁,因此任何对象都具备调用wait方法的资格,wait方法是定义在Object类中的。 sleep是无条件的,任何线程都可以sleep,因此sleep方法是Thread类的静态方法。
2. 线程wait后就放弃了CPU的执行权和执行资格,也放弃了原先持有的锁。因此wait的线程被notify后,必须再次获得锁才能继续执行代码。线程sleep后放弃了CPU的执行权和执行资格,但不放弃锁(如果有的话),醒来后只要CPU和操作系统说“轮到你了”,就可以继续执行代码。

请楼下补充。。。
回复 使用道具 举报
fantacyleo 发表于 2014-7-26 17:11
印象中有两点:
1. wait是让当前线程在某个对象的等待池中等待,当前线程在wait前必须拿到了这个对象的锁, ...

你都说的这么详细了,我还补充个毛线哦!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马