如何在Java中同步运行进程?

时间:2019-06-02 15:44:48

标签: java asynchronous

我想同步运行进程,而不求助于异步运行。

考虑代码

ProcessBuilder pb = new ProcessBuilder(COMMAND);
LOGGER.info(String.join(" ", COMMAND));
pb.redirectErrorStream(true);
Process cmdProces = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(cmdProces.getInputStream()));
String line;
while ((line = reader.readLine()) != null) System.out.println("tasklist: " + line);
cmdProces.waitFor(); // (1)
LOGGER.info("Script executed ");
// Java reference to output file of COMMAND

此代码段位于调度程序内部,该调度程序每30秒执行一次。下一次执行在上一次运行完成之前执行。我检查了文档,上面写着

  

当不再有引用时,子进程不会被杀死。   流程对象,但子流程继续执行   异步。

现在,我想说我的脚本COMMAND仍在运行,但是java解释为没有更多引用。我该如何预防?是否必须等到COMMAND完成? COMMAND的输出显示脚本已完成。是否可以等待此输出?还是这很不利?

0 个答案:

没有答案