问答详情
源自:4-1 Java线程交互之汽车人之忧:消失的能量

Sleep()、suspend()和wait()之间有什么区别?

Sleep()、suspend()和wait()之间有什么区别?

提问者:释迷 2016-06-21 23:08

个回答

  • 风云7857
    2016-06-21 23:13:11
    已采纳

    Thread.sleep()使当前线程在指定的时间处于“非运行”(Not Runnable)状态。线程一直持有对象的监视器。比如一个线程当前在一个同步块或同步方法中,其它线程不能进入该块或方法中。如果另一线程调用了interrupt()方法,它将唤醒那个“睡眠的”线程。

    注意:sleep()是一个静态方法。这意味着只对当前线程有效,一个常见的错误是调用t.sleep(),(这里的t是一个不同于当前线程的线程)。即便是执行t.sleep(),也是当前线程进入睡眠,而不是t线程。t.suspend()是过时的方法,使用suspend()导致线程进入停滞状态,该线程会一直持有对象的监视器,suspend()容易引起死锁问题。

    object.wait()使当前线程出于“不可运行”状态,和sleep()不同的是wait是object的方法而不是thread。

    这回答都是一些文字来的,没有代码解释哦,哈哈!!