2012-04-07 32 views
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生豬

回答