我认为大多数人只使用Oracle提供的jvm实现(最初来自Sun Microsystems)。如果我错了,请纠正我。
当我阅读notify() API时,它说:
唤醒等待此对象监视器的单个线程。如果有任何线程在等待此对象,则选择其中一个线程被唤醒。选择是任意的,并由实现自行决定。
我想知道在Oracle的jvm中调用notify()时等待线程将以什么顺序被调用。
你可能会想为什么我不考虑使用notifyAll()并停止担心。但是,当我可以使用notify()仅调用一个线程时,为什么应该不必要地调用所有等待的线程呢?即使我使用notifyAll(),我也无法控制哪个等待的线程将获取监视器。
Oracle应该在上面给出的API链接中记录其自己的实现方式。
当我阅读notify() API时,它说:
唤醒等待此对象监视器的单个线程。如果有任何线程在等待此对象,则选择其中一个线程被唤醒。选择是任意的,并由实现自行决定。
我想知道在Oracle的jvm中调用notify()时等待线程将以什么顺序被调用。
你可能会想为什么我不考虑使用notifyAll()并停止担心。但是,当我可以使用notify()仅调用一个线程时,为什么应该不必要地调用所有等待的线程呢?即使我使用notifyAll(),我也无法控制哪个等待的线程将获取监视器。
Oracle应该在上面给出的API链接中记录其自己的实现方式。