sleep() 和 wait()的区别

相同点

  1. 都会将当前线程暂停,交出CPU资源让其它线程运行。
  2. 都是native方法。
  3. 在等待期间被中断,都会抛出InterruptedException。

不同点

  1. 所属类不同
    • sleep() 属于Thread类。
    • wait() 属于Object类。
  2. 对锁保持不同
    • sleep() 保持锁。
    • wait() 释放锁。
  3. 唤醒方法不同
    • sleep() 到达指定时间自动唤醒。
    • wait() 需要notify()或notifyAll()唤醒。
  4. 使用位置不同
    • sleep() 用于任何位置。
    • wait() 用于同步代码块。
  5. 调用后进入状态不同
    • sleep() 进入TIMED-WAITING
    • wait() 进入 WAITING

你可能感兴趣的:(sleep() 和 wait()的区别)