java Process.waitfor 是一个阻塞调用

标签 java process event-handling reactive-programming

我希望能够从 JVM 内部启动外部进程并完成它。

我可以使用 ProcessBuilder 创建一个流程,然后执行 Process.waitFor() 以等待其完成。然而,这是一个阻塞调用,只会浪费线程资源。

通过事件处理程序和响应式编程来完成此操作会更有意义。人们会认为 JVM 可以向操作系统注册某种监听器来监听进程完成事件,并将其转发回程序。

是否存在这样的机制/API?有没有实现此目的的替代方案或库?

最佳答案

使用 NuProcess如果您只需要支持 Windows、MacOS X 和 Linux,请使用该库。它使用回调模型提供对外部进程的非阻塞访问——包括 I/O 和程序终止。 披露:我是上述图书馆的作者。

关于java Process.waitfor 是一个阻塞调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13766682/

相关文章:

java - 为我愚蠢:解析是什么?

java - 将输入流转换为位图

java - 在共享包中使用 GWT 的 NumberFormat 类

java - 从对象获取 null 属性

带有 fork 的 Java 并行进程

windows - 单击后禁用按钮

android - LongClick 事件发生得太快。如何增加触发它所需的点击时间?

c# - process.kill() 是否终止 WaitForExit() (没有时间限制)

linux - Linux 内核是一个进程、线程还是一些处理来自应用程序的请求的被动的东西?

python - 使用 matplotlib 键事件和修饰符