我需要从 java 进程调用外部进程/脚本/cli 命令。
由于这些调用会很多,有些会返回运行的进程/脚本的结果,而其他人只会运行它,我想知道是否:
- 有一个围绕 Java 构建的标准设计,
ProcessBuilder
这样我就不会分散在代码调用ProcessBuilder
中 - 我可以做哪些优化?例如,从文件中读取所有 cli 命令而不是像
final String
在代码中那样保留它们是否有意义?
我需要从 java 进程调用外部进程/脚本/cli 命令。
由于这些调用会很多,有些会返回运行的进程/脚本的结果,而其他人只会运行它,我想知道是否:
ProcessBuilder
这样我就不会分散在代码调用ProcessBuilder
中final String
在代码中那样保留它们是否有意义?你的问题有点模糊,无法写出准确的答案,但我有一些建议:
launch
方法来启动进程并捕获 stdout 和 stderr(在两个线程中),以编写驱动程序的日志。如果我尝试对您的问题进行分类,我认为主要是在Control flow。
要解决一个大问题,您可以使用并行性:同时启动多个进程并等待所有进程终止:这是一个集合或连接阶段。也许您可以向另一台联网的计算机启动远程命令。
如何在 XML 文件中指定并行性的一个很好的例子是ANT 构建文件:
<parallel>
<wlrun ... >
<sequential>
<sleep seconds="30"/>
<junit fork="true" forkmode="once" ... >
<wlstop/>
</sequential>
</parallel>
我可以建议您在不编程的情况下使用 ANT 来解决您的问题吗?
用纸和笔画一幅希望执行的图可能会有所帮助...... ;-)
几个图形应用程序可能有助于绘制控制流的逻辑图。完成后,在此处发布,您将获得更准确的答案,我希望...