我正在开发中,我使用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