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