4
在試圖調試爲什麼我的多線程Java應用程序消耗大量CPU時,我發現每個線程都執行一個並非CPU密集型的外部命令,但是當Java運行它時,找到佔用我100%CPU的Java運行時。使Java的外部進程消耗大量CPU
爲了進一步調試,我用簡單的Linux「ls」命令替換了外部進程。這裏是我如何運行它 -
String[] commands = new String[]{"/bin/sh", "-c", "ls"};
try {
Process p = Runtime.getRuntime().exec(commands);
} catch (IOException ex) {
//
}
不過,我看到Java使用所有的CPU。
我甚至沒有讀取進程的輸出,也沒有打開任何類型的流。
出了什麼問題?從Java向外運行時,如何使用簡單的ls
命令導致Java運行時消耗大型CPU?
而不是運行外部命令,模擬螺紋加工的,我試圖把Thread.sleep()方法和它的作品精細沒有更多的CPU生豬