如何用Java创建一个进程
我想在我的应用程序中创建一个进程。 但是在浏览了Java的API后,我仍然没有完全理解它。
基本上我想创建一个多进程应用程序。 但是新进程是我的应用程序中的一个类。
我知道有些人可能会问为什么不创建一个线程? 因为该类正在调用matlab代码,所以问题和Java类就在这里
有没有办法做到这一点?
在Java中创建进程只有一种方法, Runtime.exec()
– 基本上它允许您像通过命令行界面一样启动新的JVM。
也许java.lang.Process可以在这里帮助..
ProcessBuilder.start()
和Runtime.exec
方法创建本机进程并返回Process子类的实例,该实例可用于控制进程并获取有关它的信息。 Process类提供了从进程执行输入,向进程执行输出,等待进程完成,检查进程的退出状态以及销毁(终止)进程的方法。
如果你想要更精细的控制,可以使用ProcessBuilder
– 这个类允许你设置环境变量并配置项目的管道( stdout
, in
, err
)。
一旦配置ProcessBuilder#start()
,就可以根据需要多次调用ProcessBuilder#start()
来创建新进程(它返回一个Process
实例)。 您可以在这些调用start()
之间更改新进程的配置。
我想你知道如何创建一个新的流程。 如果没有,请看这里或这里 。
现在,您需要使用当前的类路径运行java.exe
。 您可以在System属性java.class.path
找到此类路径。 要找到java.exe
,请查看new File( System.getProperty("java.home"), "bin")
。
如果您遇到这种方法的问题,我建议编写一个包装器脚本并使用足够的参数调用它,以便main()
的代码可以决定调用哪个实际类。
我的建议是看看zt-exec: https : //github.com/zeroturnaround/zt-exec
它包装了java.lang.ProcessBuilder和Apache Commons Exec,可以轻松管理进程生命周期。