我在java中遇到同步问题。 我希望我的主线程等到进程“p1”结束。 我用过“waitfor”方法。它对我没用。
Process p1 = runtime.exec("cmd /c start /MIN " + path + "aBatchFile.bat" );
p1.waitFor();
有人可以帮帮我吗?
非常感谢你。
答案 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();