Java JLS-等待设置-它在哪里?

Java JLS-等待设置-它在哪里?,java,wait,java-threads,Java,Wait,Java Threads,JLS for Java SE 11版本在中说明: 每个对象除了具有关联的监视器外,还具有 关联的等待集。等待集是一组线程 首次创建对象时,其等待集为空 对象的属性。wait表示: 此方法导致放置当前线程(此处称为T) 此对象的等待集中的自身[…] 然后从该对象的等待集中删除线程T[…] 此等待集位于何处 “具有关联的等待集”和“此对象的等待集”表示它不是对象的一部分。据我所知,JVM的开发人员没有提到它 等待集不是JVM的一部分吗?它是操作系统的一部分,即线程调度程序吗 是否有用于读取等待集的

JLS for Java SE 11版本在中说明:

每个对象除了具有关联的监视器外,还具有 关联的等待集。等待集是一组线程

首次创建对象时,其等待集为空

对象的属性。wait
表示:

此方法导致放置当前线程(此处称为T) 此对象的等待集中的自身[…]

然后从该对象的等待集中删除线程T[…]

此等待集位于何处

“具有关联的等待集”和“此对象的等待集”表示它不是对象的一部分。据我所知,JVM的开发人员没有提到它

等待集不是JVM的一部分吗?它是操作系统的一部分,即线程调度程序吗


是否有用于读取等待集的API(即用于监控目的)?类似于
ThreadMXBean
返回的
ThreadInfo

等待集应该是JVM的一部分,因为它是一个运行时信息,所以无需将其放入类文件格式。Idk的确切位置,但由于
Object.wait(int)
是一个本机方法,因此等待集可能位于JVM的本机部分。作为运行时信息,可以理解为什么它不是类文件格式的一部分。
Thread.yield()
也被声明为本机,文档中说:“对调度程序的提示[…]”。我希望这会调用操作系统指令。这可能也适用于
Object.wait()
。这就是为什么我问等待集是否是线程调度器的一部分,我想说它取决于JVM实现/目标平台。它可能是操作系统调度程序的一部分,但也可能是JVM自己的线程系统的一部分。