在java程序中引入延迟

时间:2010-07-09 16:40:54

标签: java

我使用以下命令从我的java代码调用.exe文件:

Runtime r=Runtime.getRuntime();  
Process p=null;
p=r.exec("ABCD.exe");

我希望程序等到exe完成它的工作。(这实际上是服务器端代码...控制传递到客户端之后)。现在的问题是客户端的UI在.exe之前填充在服务器端可以形成所需的组件。形成的UI没有正确的文件。 我尝试了正常的p.waitfor(),但它似乎没有用。 有什么建议吗?

1 个答案:

答案 0 :(得分:6)

简短的回答是,你想在主线程中调用Process.waitFor(),正如你所提到的那样。

但是,处理进程并不是完全不会忘记的,因为,如类javadocs 所引用的,您可能需要读取进程的输出。如果你不这样做(在这种情况下需要一个单独的线程),那么在许多情况下你会有一个有效的死锁 - 你的Java应用程序正在等待进程完成,但是进程正在尝试将输出写入一个完整的缓冲区,从而等待Java应用程序读取其输出。

如果您提供了有关“它不起作用”的更多信息,那么这也有助于诊断。


编辑:在一个完全独立的点上,将p初始化为null然后立即重新分配它没有任何意义。你的第二行会更清晰,而且不那么混乱Process p = r.exec("ABCD.exe");