2016-05-15 57 views
0

我一直在寫一個矩陣乘法的應用程序。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像多線程一樣執行我的單線程進程?

+1

JVM總是執行多個線程(例如GC線程)。 –

+0

是的,我認爲。感謝您糾正我。我認爲沒有辦法將單線程應用程序轉換爲JVM的多線程,對吧? – Diga

回答

1

但是有沒有可能JVM執行我的單線程 進程爲多線程?

號JVM將有多個線程,但它不會也不能隨便決定,除非你自己創建的線程多線程程序(或使用其他一些多線程機制像Executor)。

+0

感謝您的回答。我知道這沒有任何意義。但我想仔細檢查。 – Diga