java - JVM 或底层操作系统是否处理线程状态更改

标签 java multithreading operating-system jvm

当我创建一个多线程程序并使用 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/

相关文章:

java - 如何从 HTML 代码中获取值(value)?

c - 在 C 中创建一维结构数组的问题

multithreading - Perl 有多重处理模块吗?

java - 根据使用的操作系统在 Swing 中加载图像图标

c - 驱动程序如何成为操作系统的一部分?

java - XXXXRCYYYYMMDDnnnnnnnn 的正则表达式

java - 从迭代器中获取键值

java - 为什么 ExecutorService.submit 将 Errors 包装在 ExecutionException 中?

java - 多客户端java客户端服务器聊天

c++ - 将派生类指针的 vector 传递给线程