使 java 个子进程在后台保持活动状态
Keeping java subprocess alive in background
我有一个 class 方法,它使用流程构建器创建流程。然后我有 2 个其他方法使用全局变量来编写命令并收集来自进程的响应。
我想从另一个 class 开始这个过程,然后能够使用我希望从这个原始 class 开始的其他方法编写命令。但是,我看不到让子流程保持活动状态的方法。如果我使用 .waitFor()
然后我无法 运行 任何其他命令,因为它挂起(等待子进程退出)。但是,如果我只是让创建方法完成,一旦我返回到原始 class 并调用输入法,进程就会被终止。有没有什么办法可以让这个过程保持活跃但处于睡眠状态?允许程序继续但能够回调它。
您需要 运行 在新线程中处理您的子进程。如果您不熟悉多线程和并发处理的概念,请查看这篇文章:http://www.vogella.com/tutorials/JavaConcurrency/article.html
此外,如果您希望子进程在主程序完成后继续运行,则需要将该线程设置为 daemon 线程。
要了解有关线程和守护线程的更多信息,请查看 Java 文档:http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
我有一个 class 方法,它使用流程构建器创建流程。然后我有 2 个其他方法使用全局变量来编写命令并收集来自进程的响应。
我想从另一个 class 开始这个过程,然后能够使用我希望从这个原始 class 开始的其他方法编写命令。但是,我看不到让子流程保持活动状态的方法。如果我使用 .waitFor()
然后我无法 运行 任何其他命令,因为它挂起(等待子进程退出)。但是,如果我只是让创建方法完成,一旦我返回到原始 class 并调用输入法,进程就会被终止。有没有什么办法可以让这个过程保持活跃但处于睡眠状态?允许程序继续但能够回调它。
您需要 运行 在新线程中处理您的子进程。如果您不熟悉多线程和并发处理的概念,请查看这篇文章:http://www.vogella.com/tutorials/JavaConcurrency/article.html
此外,如果您希望子进程在主程序完成后继续运行,则需要将该线程设置为 daemon 线程。
要了解有关线程和守护线程的更多信息,请查看 Java 文档:http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html