【问题标题】:Java Single Thread CPU Use and Multithread CPU UseJava 单线程 CPU 使用和多线程 CPU 使用
【发布时间】:2023-07-17 23:08:02
【问题描述】:

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

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

首先

  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总是执行多个线程(例如GC线程)。
  • 是的,我是这么认为的。谢谢你纠正我。我认为没有办法通过 JVM 将单线程应用程序转换为多线程,对吧?

标签: java multithreading


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回答。我知道这没有任何意义。但我想仔细检查一下。
最近更新 更多