我正在使用Java来执行两个ProcessBuilder脚本。我希望两次执行之间有10秒的时间间隔。这就是我使用线程的原因。但是下面的代码不会执行shell脚本(没有线程,它们就会执行)。
public void execute() {
new Thread(new Runnable() {
public void run() {
Process process_1;
try {
List<String> cmdList_1 = new ArrayList<String>();
cmdList_1.add("sh");
cmdList_1.add("command_1.sh");
ProcessBuilder pb = new ProcessBuilder(cmdList_1);
process_1 = pb.start();
process_1.waitFor();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
new Thread(new Runnable() {
public void run() {
Process process_2;
try {
Thread.sleep(10000);
List<String> cmdList_2 = new ArrayList<String>();
cmdList_2.add("sh");
cmdList_2.add("command_2.sh");
ProcessBuilder pb = new ProcessBuilder(cmdList_2);
process_2 = pb.start();
process_2.waitFor();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
} 我如何修复我的代码?或者,有没有更好的方法来实现我的抱负?
提前感谢
发布于 2019-07-26 02:03:17
尝试使用该过程的输出,如下所示:
ProcessBuilder processBuilder = new ProcessBuilder();
Process process = processBuilder.start();
BufferedReader reader = new BufferedReader((new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}https://stackoverflow.com/questions/57197928
复制相似问题