黑马程序员技术交流社区

标题: sleep()和wait()的区别在哪里? [打印本页]

作者: 王维波    时间: 2011-11-2 21:20
标题: sleep()和wait()的区别在哪里?
sleep()和wait()的区别在哪里?

该贴已经同步到 保持常态0616的微博
作者: 范龙彬    时间: 2011-11-2 21:39
sleep() 使当前线程暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是如果有Synchronized同步块,其他线程仍然不同访问共享数据
wait方法用于协调多个线程对共享数据的存取,所以必须在Synchronized语句块内使用,wait()方法使当前线程暂停执行并释放对象锁标志

作者: 宿万涛    时间: 2011-11-2 23:50
.一个对象在sleep()的时候是有时间限制的,一个对象在wai()t的时候没有时间限制,会让对象一直暂停下去,当有其他对象去调用他的notify或者调用全局的notifyAll的时候才会开始继续执行。


作者: 葛雨龙    时间: 2011-11-2 23:53
本质上sleep是自己睡自己醒(时间),wait是自己睡,别人叫醒
作者: 秦冲    时间: 2011-11-3 06:28
1.wait()和sleep()这两个方法来自不同的类分别是Thread和Object.
2.最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法.
3.wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用.
4.sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常.




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