我正在尝试模拟相同的代码,以便让您了解实际发生的事情。
private boolean executeCommands(String[][] cmd) {
boolean flag = true;
String line = "";
int i = 0;
while(i < cmd.length) {
appendTextToLog(cmd[i][1]);
try {
Process p = Runtime.getRuntime().exec(cmd[i][0]);
p.waitFor();
}
catch (IOException | InterruptedException e) {
e.printStackTrace();
}
i++;
}
return flag;
}
protected boolean appendTextToLog(String s) {
log.setText(log.getText()+s+"\n");
return true;
}
log是一个JTextPane。
现在我正在调用上面的函数。
String cmd[][] = {
{"ls -l", "Command1"},
{"sleep 5", "SLEEPING."},
{"ls -l", "Command2"},
{"sleep 5", "SLEEPING."},
{"ls -l", "Command3"}
};
flag = executeCommands(cmd, true, log);
所以在日志中首先应该出现“Command1”然后“SLEEPING”&amp;像这样一个接一个。
但它没有发生,从“Command1”到“Command3”,所有文本都一次出现。就像首先所有命令都在执行,然后一次附加所有文本。
我认为这是同步问题。但是无法弄明白。 请帮我。提前谢谢......