产卵使用进程生成从Java多进程(Spawning multiple process using p

2019-10-17 01:15发布

我正在开发中,我使用Java作为我的前端和外壳作为我的后端的Web应用程序。 我处理很多壳的文件..例如,如果我必须处理100个文件。 我打算从产卵Java应用程序中4个个子流程。 我读到进程生成器。 但我没有得到如何使用start()方法来产生多个进程,然后等待所有的人,直到它完成,再继续处理一个清晰的概念。 任何reagrding这个想法是对我非常有用。 谢谢。

Answer 1:

一般来说,开始将调用Runtime.exec(...)代表你。

一旦运行(关在自己的小程序),你可以通过流程的输入和输出流的交互。

在我自己的工作,我监视输入和错误流。 我通过生成一个新的线程为每个数据流做到这一点,监视通过通过把stream.read()方法,寻找-1的返回结果,以确定何时流已经完成。

我使用的是用来提供“WAITFOR”功能,并帮助清理流线第三个“监视”线程。

我会建议至少读取输入和错误流在单独的线程,因为这可以让你监视,而不阻止您当前线程上下文的过程。

如果你想等待进程退出,你应该使用Process.waitFor()该过程由退还给你ProcessBuilder.start()方法)。 这将等待进程退出。 此方法将返回退出代码的过程,可以对这个过程可能要告诉你的错误回应有用。

好吧,总之...

ProcessBuilder pb = new ProcessBuilder(new String[] {cmd, parameter1, parameter2, ...});
Process process = pb.start();

InputStream is = process.getInputStream();
InputStream isErr process.getErrorStream();

// Spawn some threads to process the streams

int exitValue = process.waitFor();

if (exitValue == 0) {

    System.out.println("All is good with the world");

} else {

    // Handle error     

}


文章来源: Spawning multiple process using process builder from Java