在Java中的进程之间实现等待?

时间:2009-03-17 14:40:54

标签: java process exec wait

我想帮助理解并实现我的应用程序中各个进程之间的“等待进程完成”,这需要以逐步方式进行。我的java文件运行批处理文件,然后运行脚本。在结束时,我需要以连续的方式运行(通过命令行)一系列命令。我正在使用:

Runtime.getRuntime().exec("cmd /c start " + command)

运行我的批处理文件和命令(不确定该信息是否相关)。现在正在发生的事情是,我的应用程序中需要发生的第二步是在第一步(运行运行脚本的批处理文件)完成之前执行。在运行下一系列命令之前,我需要完成第一步。我真的希望我有意义!

3 个答案:

答案 0 :(得分:6)

exec()返回一个Process实例,您可以在其上执行waitFor()。

注意:我认为“start”实际上会产生一个单独的Windows进程,因此waitFor()可能会在命令完成之前返回。尝试从命令行中删除“start”?

答案 1 :(得分:3)

易:

只需调用Process实例的方法waitFor()即可。 它会停止线程,直到外部进程终止;

答案 2 :(得分:1)

您可以将这一系列命令放入自己的批处理文件中吗?

否则,您可以使用ProcessBuilder获取Process个对象,并在其上调用waitFor()

  

导致当前线程在必要时等待,直到此Process对象表示的进程终止。

编辑:实际上,exec()会返回Process,因此您根本无需担心ProcessBuilder部分。