从Object.notifyAll 中唤醒并未能获得锁的线程在哪里?

where are the threads waken up from Object.notifyAll and failing to get the lock?

监视器的工作原理如下: monitor

监视器是您应该了解的一个基本概念。最好在某个地方阅读它。

简而言之,我可以说有一些主要原则:

  1. 如果一个线程进入同步块 - 同步对象的监视器被阻塞,所有其他线程都不能 执行同步块(它们在条目集中)。
  2. 如果在同步对象上调用 wait() 方法,则线程进入 Wait Set
  3. 如果在同步对象上调用 notify()/notifyAll() 方法,则意味着 one/all 个线程从 Wait Set 转到 Entry Set。

你的问题的答案是 - 当你调用 notifyAll() 方法时,等待集中的所有线程都进入入口集。