我在研究操作系统概念时学到了两种类型的线程:内核级和用户级。可以在多处理器环境中执行Java线程吗?
我还了解到,内核级线程或进程也可以在多处理器环境中执行。
我对Java线程(作为用户级线程)有基本的疑问, 我们可以使用它们在多处理器环境中执行吗?
我在研究操作系统概念时学到了两种类型的线程:内核级和用户级。可以在多处理器环境中执行Java线程吗?
我还了解到,内核级线程或进程也可以在多处理器环境中执行。
我对Java线程(作为用户级线程)有基本的疑问, 我们可以使用它们在多处理器环境中执行吗?
首先答案是肯定的。您可以通过在java中创建多个线程来利用多核处理器的全部功能。
据我所知,jvm采用了混合线程模型,包括内核线程和用户线程。它有一个策略来决定何时创建哪种类型的线程。我相信当系统资源丰富时,它往往会创建内核线程并分配java线程对象来运行它。
听起来像你谈论的是好的旧Java 1.1“绿色线程”。这是操作系统没有本地线程支持或至少没有稳定的支持的一大困惑。至少在讨论Oracle的参考实现时,此功能在当前的JVM实现中不再存在。 Java线程始终是这些JVM上的内核线程。
所以答案是肯定的,Java线程将受益于SMP,即多核CPU。它要求操作系统具有本地线程实现,但如果没有它,整个SMP计算机就没有多大意义。 JVM必须能够使用它,在所有常见系统中都是如此。
使用fork-join框架来处理多处理器。 – Masudul