线程调度 - 在调用notify之后线程如何获取锁定

时间:2016-04-08 10:27:23

标签: java multithreading

我怀疑线程如何通过以下方案获得锁定,

有3个主题。

* Thread-1在object1上获取锁定和调用等待方法

* Thread-2获取object1上的锁定和调用等待方法

* Thread-3在object1上获取锁定和调用notify方法

现在JVM如何唤醒线程。 Thread-1获取监视器对象上的锁定,或者Thread-2获取锁定?请详细解释原因。

假设所有线程都具有相同的优先级。

由于

2 个答案:

答案 0 :(得分:1)

javadocs for the jdk 8州的方法通知文档中:

  

唤醒正在此对象监视器上等待的单个线程。如果   任何线程都在等待这个对象,其中一个被选中   惊醒。选择是任意的,由酌情决定   实现。线程通过调用一个线程在对象的监视器上等待   等待方法。

答案 1 :(得分:1)

通知订单无法提前预测。两个线程中的任何一个 - Thread-1或Thread-2都可以获得锁定,您应该根据该模型进行编程,而不是根据任何固定订单通知或锁定获取。