我有一个类,该方法使用流程构建器创建流程。然后我有另外两个使用全局变量来编写命令并从过程中收集响应的方法。
我想从另一个类启动该过程,然后能够使用其他方法编写命令,如我所希望的那样。但是,我无法看到一种方法来保持子流程的活跃性。如果我使用if (Str::startsWith($expression, '(')) {
$expression = substr($expression, 1, -1);
}
,那么我就无法运行任何其他命令,因为它挂起(等待子进程退出)。但是如果我只是让create方法完成,一旦我返回到原始类并调用输入方法,该进程就会被杀死。有没有办法让这个过程保持活着但是睡着了?允许程序继续但能够回拨它。
答案 0 :(得分:0)
您需要在新线程中运行子进程。如果您不熟悉多线程和并发处理的概念,请查看以下文章:http://www.vogella.com/tutorials/JavaConcurrency/article.html
此外,如果您希望子程序在主程序完成后生效,则需要将该线程设置为守护程序线程。
要了解有关Thread和守护程序线程的更多信息,请查看Java文档:http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html