Java的通知如何工作?

时间:2014-05-19 11:21:09

标签: java concurrency notify

在有多个实例等待的线程中调用notify()时,Java(或JVM)如何选择唤醒哪个线程?

2 个答案:

答案 0 :(得分:2)

notify方法只唤醒一个等待该对象的线程并且该线程开始执行。因此,如果有多个线程在等待对象,则此方法将仅唤醒其中一个。唤醒线程的选择取决于线程管理的OS实现。

答案 1 :(得分:2)

您可以用来回答的来源:

  • Java Language Specification第17.2.2章通知:
    无法保证等待集中的哪个线程被选中。

  • Object.notify()上的
  • Javadoc读取:
    唤醒正在等待此对象监视器的单个线程。如果任何线程正在等待此对象,则选择其中一个线程被唤醒。 选择是任意的,由实施决定。