编辑
2024-03-07
面试题库
0
请注意,本文编写于 535 天前,最后修改于 363 天前,其中某些信息可能已经过时。

等待/通知机制原理

等待/通知机制主要依赖于 Object 类的 wait()、notify() 和 notifyAll() 方法:

wait(): 当前线程进入等待状态,释放对象的监视器,并进入 WAITING 状态。它必须在 synchronized 块或方法内部调用。

notify(): 唤醒在对象监视器上等待队列中等待时间最长的线程,并将其移动到 BLOCKED 状态。它也必须在 synchronized 块或方法内部调用。

notifyAll(): 唤醒对象监视器上所有等待的线程,并将它们移动到 BLOCKED 状态。它也必须在 synchronized 块或方法内部调用。

等待/通知机制实现线程间通信

线程 A 调用 wait() 方法: 当前线程进入等待状态,释放对象的监视器,并进入 WAITING 状态。线程 A 等待线程 B 的通知。

线程 B 修改共享变量: 线程 B 执行 synchronized 块或方法,修改共享变量。

线程 B 调用 notify() 或 notifyAll() 方法: 线程 B 唤醒线程 A,将其移动到 BLOCKED 状态。线程 A 准备从 wait() 方法返回。

线程 A 获取锁并返回: 线程 A 获取对象的监视器,并从 wait() 方法返回,继续执行后续代码。

本文作者:whitebear

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!