请注意,本文编写于 528 天前,最后修改于 528 天前,其中某些信息可能已经过时。
在Java中,await和wait都属于条件变量的使用方式。它们都用于线程之间的协调和同步,但在使用方式和功能上有一些区别。
-
使用方式:
- await:await方法是在使用Lock对象时,通过Condition对象调用的。在使用await方法之前,需要先获取Lock对象的锁,然后通过Condition对象调用await方法来使线程等待。
- wait:wait方法是在使用synchronized关键字时,通过Object对象调用的。在使用wait方法之前,需要先获取Object对象的锁,然后通过Object对象调用wait方法来使线程等待。
-
锁的释放:
- await:在调用await方法后,线程会释放所持有的锁,允许其他线程进入临界区。
- wait:在调用wait方法后,线程也会释放所持有的锁,允许其他线程进入临界区。
-
唤醒方式:
- await:通过调用Condition对象的signal或signalAll方法来唤醒等待的线程。
- wait:通过调用Object对象的notify或notifyAll方法来唤醒等待的线程。
-
使用位置:
- await:只能在使用Lock对象时的同步代码块或同步控制块中使用。
- wait:可以在任何位置使用,只要在使用synchronized关键字的同步代码块或同步方法中。
await和wait都是用于线程之间的协调和同步的条件变量,但在使用方式、锁的释放、唤醒方式和使用位置上有一些区别。
Learn more:
- Java之wait、await、sleep的区别和联系 - 掘金
- Java并发:await/wait的区别_java await与wait的区别-CSDN博客
- java await wait_mob64ca12f1c6f8的技术博客_51CTO博客
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA
许可协议。转载请注明出处!