相同点
- 都会将当前线程暂停,交出CPU资源让其它线程运行。
- 都是native方法。
- 在等待期间被中断,都会抛出InterruptedException。
不同点
- 所属类不同
- sleep() 属于Thread类。
- wait() 属于Object类。
- 对锁保持不同
- sleep() 保持锁。
- wait() 释放锁。
- 唤醒方法不同
- sleep() 到达指定时间自动唤醒。
- wait() 需要notify()或notifyAll()唤醒。
- 使用位置不同
- sleep() 用于任何位置。
- wait() 用于同步代码块。
- 调用后进入状态不同
- sleep() 进入TIMED-WAITING
- wait() 进入 WAITING