天天看点

Java中wait、sleep、yield方法的区别

wait和sleep的区别

相同:

1.执行Sleep()方法和Waiting()方法都会释放运行权,即让出CPU

2.执行Sleep()方法和Waiting()方法都会让当前线程进入阻塞状态

不同点:

1.wait只能在同步(synchronize)环境中被调用,而sleep没这个限制。

2.进入wait状态的线程能够被notify和notifyAll线程唤醒,但是进入sleeping状态的线程不能被notify方法唤醒,sleep()方法可以使用interrupt()方法将休眠的线程唤醒。

3.wait通常有条件地执行,线程会一直处于wait状态,直到某个条件变为真。但是sleep仅仅让你的线程进入睡眠状态。

4.wait方法在进入wait状态的时候会释放对象的锁,但是sleep方法不会。

5.wait方法是针对一个被同步代码块加锁的对象,而sleep是针对一个线程。