Java单线程CPU使用和多线程CPU使用

时间:2016-05-15 09:03:35

标签: java multithreading

我一直在编写矩阵乘法的应用程序。

我已经完成并观察了资源监视器以进行比较。

首先

  1. 3000x3000矩阵相乘。
  2. 单线程比多线程慢
  3. 当我检查Windows资源监视器时,我发现多线程应用程序的线程多于单线程。我检查了“javaw.exe”,即使我编写单线程应用程序,它也有比一个更多的线程。那不是关于我的。这是关于“javaw.exe”本身。但长话短说,单线程的javaw显示 - 例如 - 16个线程。多线程显示 - 例如 - 24。
  4. 当多线程应用程序工作时,CPU使用率几乎为100%。大多数使用属于“javaw.exe”。但在单线程应用程序中,使用率约为30-35%
  5. 我有一个i5 CPU。双核。 4核心逻辑。

    当我检查Windows资源监视器时,对于多线程应用程序,CPU 0-1-2-3的使用率几乎是100%。

    但在单线程应用程序中,CPU 0-1-2-3仍在使用。大约相同的百分比,但甚至不接近100%。

    这是我的问题。当我执行单线程应用程序时,谁在使用其他内核?当然,任何其他进程都可以使用它们。甚至“javaw.exe”本身(我告诉自己,它是多线程的)。但JVM是否有可能将我的单线程进程作为多线程执行?

1 个答案:

答案 0 :(得分:1)

  

但JVM是否有可能执行我的单线程   进程多线程?

没有。 JVM将有多个线程,但除非您自己创建线程(或使用其他多线程机制,如Executor),否则它不会也不能决定多线程程序。