如何用Java创建一个进程

我想在我的应用程序中创建一个进程。 但是在浏览了Java的API后,我仍然没有完全理解它。

基本上我想创建一个多进程应用程序。 但是新进程是我的应用程序中的一个类。

我知道有些人可能会问为什么不创建一个线程? 因为该类正在调用matlab代码,所以问题和Java类就在这里

有没有办法做到这一点?

在Java中创建进程只有一种方法, Runtime.exec() – 基本上它允许您像通过命令行界面一样启动新的JVM。

也许java.lang.Process可以在这里帮助..

ProcessBuilder.start()Runtime.exec方法创建本机进程并返回Process子类的实例,该实例可用于控制进程并获取有关它的信息。 Process类提供了从进程执行输入,向进程执行输出,等待进程完成,检查进程的退出状态以及销毁(终止)进程的方法。

如果你想要更精细的控制,可以使用ProcessBuilder – 这个类允许你设置环境变量并配置项目的管道( stdoutinerr )。

一旦配置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,可以轻松管理进程生命周期。