1
我有這樣的代碼在我的程序:執行Java中的外部程序 - 巨大的CPU負載
ProcessBuilder builder = new ProcessBuilder(command);
builder.directory(new File(Vars.pathToForFfmpegBinDir));
final Process process = builder.start();
InputStream is = process.getErrorStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println("!!! "+line);
}
由於外部程序得到很多輸出信息,它的加載每while
週期一個CPU內核的100%。
我嘗試這種代碼的另一個版本:
ProcessBuilder builder = new ProcessBuilder(command);
builder.redirectError(new File(pathToForModerationDir+"/1err.log"));
builder.redirectOutput(new File(pathToForModerationDir+"/1inp.log"));
builder.directory(new File(Vars.pathToForFfmpegBinDir));
final Process process = builder.start();
process.waitFor();
但它加載每個進程的一個CPU內核的100%。
如何在此代碼中減少CPU負載?
如果您從終端執行外部命令,您沒有CPU負載問題? – Djizeus
程序中的部分內容爲:「處理映像」對於CPU負載問題並不好。 –
不,在cmd程序中執行得很好。 CMD使用率〜0.5%... –