黑马程序员技术交流社区

标题: 线程问题 [打印本页]

作者: 不愿一人    时间: 2013-12-23 18:08
标题: 线程问题
刚刚看了下以前做的视频笔记,看到线程时,对sleep和wait这两个方法有点
迷惑,两者都可以暂停线程,但是有什么区别吗?求大神给介绍的详细点,我线程这一块
学的不怎么好

作者: 熊志伟    时间: 2013-12-23 18:21
本帖最后由 熊志伟 于 2013-12-23 18:25 编辑

(1)这两个方法来自不同的类,sleep()来自Thread类,和wait()来自Object类
(2)sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,
    要让b线程睡觉要在b的代码中调用sleep。而wait()是Object类的非静态方法
(3)sleep()释放资源不释放锁,而wait()释放资源释放锁;
(4)使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用
具体的这个帖讲的很详细: http://bbs.itheima.com/forum.php?mod=viewthread&tid=93782

作者: 天天学习    时间: 2013-12-23 18:39
简单来说
wait
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。也就是说当线程由于wait引起的等待时,这个线程自己不会发生状态改变,若无其它线程唤醒,它将一直等待。
sleep
在指定的时间内让当前正在执行的线程休眠,时间到后自动可以唤醒,不需其它线程来唤醒。




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