当我创建一个多线程程序并使用 Wait 或 Signal 等方法控制线程时,JVM 是否控制所有线程状态更改或底层操作系统是否与它有任何关系。
最佳答案
这取决于 JVM 的实现。大多数现代 JVM(Suns HotSpot、Oracles JRockit、IBM VM)将使用操作系统线程模型,因为这将提供最佳性能。
早期的实现使用绿色线程 - VM 使用自身对线程进行建模。这通常在运行它的平台或操作系统不支持线程时使用。例如,在 Java 1.1 中,在 Solaris 上使用了 Green Threads。当时,在 Solaris 中使用多核/CPU 的常见模式是使用多进程 - 直到后来才将线程添加到操作系统。
Java 语言规范没有指定必须如何实现线程,但一般来说,如果操作系统支持线程,现代 JVM 将使用操作系统实现。当操作系统不支持时,例如在低端手机或 Java Card 实现中,运行时将使用绿色线程。
关于java - JVM 或底层操作系统是否处理线程状态更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1920148/