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



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

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

首先

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

我有一个i5 CPU。双核。4核逻辑。

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

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

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

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

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

最新更新