我有一個java程序,它將一些文件提取到客戶端機器上。我已經實現了4個線程來提取文件。但是線程實現幾乎不影響提取時間。我已經在jvisualvm中檢查了線程的執行情況,它看起來很好,我確信線程是以並行方式實現的。這裏是我的系統配置...如何檢查Java程序中的線程是按順序還是並行運行?
Windows XP,Core2duo,3GB RAM。 java-vm-args:-Xmx512M -Xss2M。 我已經打印可用的處理器到正在運行的JVM ... Runtime.getRuntime()。availableProcessors()= 1(如果我沒有錯,它應該執行2個邏輯線程)。
我錯過了什麼嗎?我們如何確保線程在硬件級別平行運行?
瓶頸可能是磁盤IO(而不是線程中的處理時間)。你檢查了嗎? –
你可以在你的主線程中檢查.isAlive()(或者你不相信這個,使用像processexplorer這樣的外部應用程序)。請記住,每個物理磁盤只能使用1個讀取線程,否則您可能會創建更多開銷並使用更多線程減慢進程。 – andrew
感謝您的回答。 @Ignacio,我們如何檢查瓶頸是磁盤IO。 – Bala