2

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

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

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

4

1 回答 1

7

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

您应该更仔细地阅读 javadoc。

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

于 2013-05-06T17:19:12.200 回答