我怀疑线程如何通过以下方案获得锁定,
有3个主题。
* Thread-1在object1上获取锁定和调用等待方法
* Thread-2获取object1上的锁定和调用等待方法
* Thread-3在object1上获取锁定和调用notify方法
现在JVM如何唤醒线程。 Thread-1获取监视器对象上的锁定,或者Thread-2获取锁定?请详细解释原因。
假设所有线程都具有相同的优先级。
由于
答案 0 :(得分:1)
在javadocs for the jdk 8州的方法通知文档中:
唤醒正在此对象监视器上等待的单个线程。如果 任何线程都在等待这个对象,其中一个被选中 惊醒。选择是任意的,由酌情决定 实现。线程通过调用一个线程在对象的监视器上等待 等待方法。
答案 1 :(得分:1)
通知订单无法提前预测。两个线程中的任何一个 - Thread-1或Thread-2都可以获得锁定,您应该根据该模型进行编程,而不是根据任何固定订单通知或锁定获取。