黑马程序员技术交流社区
标题:
关于多线程中的wait和sleep的区别
[打印本页]
作者:
向小辰
时间:
2014-7-26 16:48
标题:
关于多线程中的wait和sleep的区别
wait和sleep的区别,求解释
作者:
fantacyleo
时间:
2014-7-26 17:11
印象中有两点:
1. wait是让当前线程在某个对象的等待池中等待,当前线程在wait前必须拿到了这个对象的锁,否则将抛出IllegalMonitorStateException。由于任何对象都可以充当锁,因此任何对象都具备调用wait方法的资格,wait方法是定义在Object类中的。 sleep是无条件的,任何线程都可以sleep,因此sleep方法是Thread类的静态方法。
2. 线程wait后就放弃了CPU的执行权和执行资格,也放弃了原先持有的锁。因此wait的线程被notify后,必须再次获得锁才能继续执行代码。线程sleep后放弃了CPU的执行权和执行资格,但不放弃锁(如果有的话),醒来后只要CPU和操作系统说“轮到你了”,就可以继续执行代码。
请楼下补充。。。
作者:
渴望学习
时间:
2014-7-26 19:57
fantacyleo 发表于 2014-7-26 17:11
印象中有两点:
1. wait是让当前线程在某个对象的等待池中等待,当前线程在wait前必须拿到了这个对象的锁, ...
你都说的这么详细了,我还补充个毛线哦!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2