【发布时间】:2020-01-26 08:42:13
【问题描述】:
例如,我有 8 个线程的 4 核处理器。我很确定,这个线程数量与 java 的线程数量没有直接关系。
【问题讨论】:
-
查看此link,它已广泛回答了您的问题。
-
不幸的是,硬件和软件工程师以不同的方式使用术语“线程”和“处理器”。从软件的角度来看,处理器线程是处理器。
标签: java multithreading processor
例如,我有 8 个线程的 4 核处理器。我很确定,这个线程数量与 java 的线程数量没有直接关系。
【问题讨论】:
标签: java multithreading processor
据我了解,您所说的是 4 个实际核心 和 2 Hyper-thread per core,这在技术上意味着 8 个虚拟核心 (vCpu)。这意味着 8 个线程 可以在没有任何上下文切换的情况下并行执行(这里不考虑超线程的复杂性)
Java 线程与操作系统线程一对一映射,而不与硬件线程一对一映射强>。这意味着对于thread allocation 和context switch,Java 取决于运行JVM 的底层OS。操作系统可以创建任意数量的线程,这些线程可以在处理器上任何可用的vCPUs 上运行。随着操作系统线程不断增加,如果线程在NOT 执行IO bound 工作,将会有更多的上下文切换和性能可能会受到影响。
【讨论】: