JVM + Linux + Intel的超线程=

jav*_*top 2 java linux multithreading jvm hyperthreading

我注意到JVM线程由于某些原因在Linux下作为进程运行(如果我错了,请纠正我).此外,事实上英特尔的超线程仅为属于同一进程的两个线程提供了额外的并行化.

这是否意味着单个多线程JVM程序不会从Linux下的超线程中获利,因为它的线程不是来自CPU的线程"观点"?

Mat*_*ner 11

Linux中的调度程序不会区分进程和线程.clone系统调用定义的进程可以共享一系列资源.通常使用的线程和进程只是常用配方的名称.

如果您将线程视为JVM中的进程,那么这只是命名法的混合.通过通常的定义,如果进程共享一个虚拟地址空间,那么它们就是进程中的"线程".

无论使用何种术语,所有硬件调度都将受益于超线程.同样完全公平,超线程不允许您并行运行更多线程:它使上下文切换更快,从而为进程提供更多的运行时间.