java - 多线程中所有处理器使用率如何达到 100%

标签 java multithreading process cpu cpu-usage

我的系统是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/

相关文章:

java - LibreOffice UNO Writer 获取单元名称

vb.net - 如何按用户杀死进程?

python - 为什么在 VS Code 的集成 Python 调试中启动多个调试线程?

c# - 有效地等待一个或多个资源可用

algorithm - 我如何计算这两个过程的预计完成时间

c - 进程共享内存不共享(c,linux)

java - 将命名空间设置为 @XmlRootElement 时解码失败且没有错误

java - Time Profiler、Instruments、OS X 中缺少 JAVA 过程名称

java - 谜语的乐趣

objective-c - performSelectorInBackground 和 NSOperation 子类的区别