我的系统是7核CPU机器。我刚刚尝试运行下面的程序
for(int i=0;i<10; i++)
{
new Thread(new Runnable()
{
@Override
public void run()
{
while (true)
{
}
}
}).start();;
}
现在我的CPU全部使用率为100%(7核为100%)。这里 10 个线程位于单个进程 javaw.exe 中。它是如何分配到我的所有 CPU 核心上的?
单个进程是否可以在多个内核中运行,或者 java 实现是否负责跨不同处理器提供线程?
最佳答案
是的,同一进程的多个线程可以分布在多个CPU上。对于许多应用程序来说,这就是使用多线程的全部意义。
当前大多数 JVM 实现都使用 native 操作系统线程(一个 Java 线程 - 一个操作系统线程),因此这一切都是由操作系统完成的。另一种选择是“green threads ”,其中 JVM 将手动安排执行。对于没有“真正”线程的体系结构或操作系统来说,这似乎已成为过去。
关于java - 多线程中所有处理器使用率如何达到 100%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27309855/