1、sleep是线程中的方法,但是wait是Object中的方法。
2、sleep方法不会释放锁,但是wait会释放。
3、sleep方法不依赖synchronized,但是wait依赖。synchronized。
4、sleep不需要被唤醒,但是wait需要。
区别
- | wait | sleep |
---|---|---|
同步 | 只能在同步上下文中调用wait方法,或抛出IIIegaImonitorStateException | 不需要在同步方法或同步代码块中调用 |
作用对象 | wait方法定义在Object类中,作用于对象本身 | sleep方法定义在java.lang.Thread中,作用于当前线程 |
释放资源 | 是 | 否 |
唤醒条件 | 其他线程调用对象的notify()或者notifyAll()方法 | 超时或者调用interrupt()方法体 |
方法属性 | wait是实例方法 | sleep是静态方法 |