我一直在寫一個矩陣乘法的應用程序。Java單線程CPU使用和多線程CPU使用
我已經完成並觀察資源監視器進行比較。
所有
- 3000x3000矩陣的第一相乘。
- 單線程比多線程慢
- 當我檢查Windows資源監視器時,我發現多線程應用程序比單線程有更多的線程。我檢查了「javaw.exe」,即使我編寫單線程應用程序,它的線程數也多於一個。這不是關於我的。這是關於「javaw.exe」本身。但長話短說,javaw與單線程顯示 - 例如 - 16線程。多線程顯示 - 例如 - 24.
- 雖然多線程應用程序工作,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的多線程,對吧? – Diga