导致主进程等待,直到另一个进程完成

时间:2010-02-17 04:16:48

标签: java process

我在java中遇到同步问题。 我希望我的主线程等到进程“p1”结束。 我用过“waitfor”方法。它对我没用。

Process p1 = runtime.exec("cmd /c start /MIN " + path + "aBatchFile.bat" );
p1.waitFor();

有人可以帮帮我吗?

非常感谢你。

1 个答案:

答案 0 :(得分:4)

此处的问题是,您从Process返回的exec()对象代表您启动的cmd.exe实例。您的cmd.exe实例做了一件事:它启动批处理文件,然后退出(无需等待批处理文件,因为这是start命令的作用)。此时,您的waitFor()会返回。

要避免此问题,您应该能够直接运行批处理文件:

Process p1 = runtime.exec(path + "aBatchFile.bat");
p1.waitFor();

或者,尝试使用/wait命令行选项:

Process p1 = runtime.exec("cmd /c start /wait /MIN " + path + "aBatchFile.bat" ); 
p1.waitFor();