Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java notify方法的工作原理_Java_Multithreading_Java Threads - Fatal编程技术网

Java notify方法的工作原理

Java notify方法的工作原理,java,multithreading,java-threads,Java,Multithreading,Java Threads,根据javadoc,notify会唤醒一个等待该对象监视器的线程。如果有任何线程正在等待此对象,则选择其中一个线程进行唤醒。选择是任意的,由实现自行决定。线程通过调用一个wait方法在对象的监视器上等待 我想知道notify是如何实现这种行为的。在许多网站上,我读到它发出了一个信号,但信号在这里意味着什么 notify是直接向第一个等待的线程发送信号,还是向线程调度程序发送信号?它不向第一个线程发送信号,而是向任何等待的线程发送信号(但只有一个线程) 你应该读书 信号也可能是一个坏名字,“通知”

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

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


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

它不向第一个线程发送信号,而是向任何等待的线程发送信号(但只有一个线程)

你应该读书


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

对不起,我弄错了javadoc和其他站点信息。我正在编辑这个问题。同样,您应该更仔细地阅读Javadoc。这里没有提到“signal”,它清楚地表明:
如果有任何线程正在等待这个对象,那么其中一个线程被选择唤醒。选择是任意的,由实现自行决定。