java - 在java程序中引入延迟

标签 java

我正在使用以下命令从我的 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/

相关文章:

java - 在 Java 8+ 中对 map 进行分区

java - 用于查找树是否对称的代码中的错误

java - 在数据库中搜索

java - 如何在 Spring Security 中使用内置的 X-Auth-Token 而不是 Spring Session Http Cookie

java - 如何调试 JNI/C 库?

java - Android 数据绑定(bind) NoSuchMethodError

java - Spring-data-jpa:批量插入不起作用

javafx 变量在两个 Controller 之间传输数据(在不同 Controller 中设置和获取数据)- 已更新

java - 硬件麦克风控制

java - Google Drive InputStreamContent 需要设置长度