Java线程可以在多处理器环境中执行吗?

时间:2013-11-20 14:13:51

标签: java multithreading operating-system

我在学习操作系统概念时学到了两种类型的线程:内核级别和用户级别。

我还了解到内核级线程或进程也可以在多处理器环境中执行。

我对Java线程(用户级线程)有基本疑问, 我们可以使用它们在多处理器环境中执行吗?

2 个答案:

答案 0 :(得分:0)

首先答案是肯定的。您可以通过在java中创建多个线程来充分利用多核处理器的全部功能。

据我所知,jvm采用混合线程模型,包括内核线程和用户线程。它有一个策略来决定何时创建哪种类型的线程。我相信当系统资源丰富时,它会倾向于创建内核线程并分配java线程对象来运行它。

答案 1 :(得分:0)

听起来像你在谈论好的旧Java 1.1“绿线”。这是操作系统没有本机线程支持或至少没有稳定支持的kludge。此功能在当前的JVM实现中不再存在,至少在谈论Oracle的参考实现时。 Java线程始终是这些JVM上的内核线程。

所以答案是,是的,Java线程将受益于SMP aka Multicore CPU。它要求操作系统具有本机线程实现,但没有它,整个SMP机器就没有多大意义。 JVM必须能够使用它,这在所有常见系统中都是如此。