java - 通知方法如何工作

标签 java multithreading java-threads

根据 javadoc,notify 唤醒正在等待该对象监视器的单个线程。如果有任何线程正在等待该对象,则选择唤醒其中一个线程。该选择是任意的并且由实现自行决定。线程通过调用其中一个等待方法来等待对象的监视器。

我想知道notify如何实现这种行为。在许多网站上我读到它发送了一个信号,但是信号在这里意味着什么?

notify 是直接向第一个等待线程发送信号,还是向线程调度程序发送信号?

最佳答案

它不会将其发送到第一个线程,而是发送到任何等待线程(但只有一个线程)。

您应该阅读the javadoc more carefully.

信号也可能是一个不好的名字,“通知”更好。该机制的实际实现对于 Java 程序员来说是透明的,技术实现应该不需要你知道......除非你对 Java 内部原理感兴趣,然后我建议你检查 OpenJDK 源代码。

关于java - 通知方法如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16403764/

相关文章:

python - Python请求-线程/进程与IO

java - Thread 类中的构造函数 Thread 不能应用于给定类型;

java - Win7 64 位 jre7 & jdk1.7.0_25 中的导入按钮错误 java.security.accesscontroleexception 访问被拒绝(java.util.propertypermission user.dir 读取)

java - DataBuffer 到 DataBufferByte 转换抛出错误

java - 泛型出了问题

java - Java 在 32 位机器上可以创建的线程数

java - 如何使用 volatile 变量编写简单的线程安全类?

python - 多线程。线程异常