我正在使用以下命令从我的 java 代码调用 .exe 文件:
Runtime r=Runtime.getRuntime();
Process p=null;
p=r.exec("ABCD.exe");
我希望程序等到 exe 完成其工作。(这实际上是服务器端代码...此后控制权传递到客户端)。现在的问题是客户端上的 UI 在 .exe 之前填充在服务器端可以形成所需的组件。因此形成的 UI 没有正确的文件。 我已经尝试过正常的 p.waitfor() 事情,但它似乎不起作用。 有什么建议吗?
最佳答案
简短的回答是您想调用 Process.waitFor()正如您所提到的,在您的主线程中。
但是,处理进程并不完全是一劳永逸的,因为,如 javadocs 类所引用的,您可能需要读取进程的输出。如果您不这样做(在这种情况下需要一个单独的线程),那么在许多情况下您将遇到有效的死锁 - 您的 Java 应用程序正在等待进程完成,但该进程正在尝试将输出写入缓冲区已满,从而等待 Java 应用程序读取其输出。
如果您提供更多有关“它不起作用”的信息,这也将有助于诊断。
编辑:在一个完全独立的点上,将 p
初始化为 null 然后立即重新分配它是没有意义的。您的第二行会更清晰且不那么困惑 Process p = r.exec("ABCD.exe");
。
关于java - 在java程序中引入延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3214721/