Java相当于Ant的Java任务中的fork?

时间:2009-05-13 10:43:10

标签: java ant fork

Ant Java task提供fork参数,根据定义“如果启用,则触发另一个VM中的类执行”。当我们处理大量数据时,设置此参数可以避免我们耗尽Java堆空间 我们希望能够通过Java类做同样的事情。实现fork提供的功能的最佳方法是什么?

3 个答案:

答案 0 :(得分:8)

执行另一个java进程。例如,通过使用ProcessBuilder类。

http://java.sun.com/javase/6/docs/api/java/lang/ProcessBuilder.html

您可以根据需要运行任意数量的工作进程。让他们拥有一个单独的主类,从主要类中完成任务,并在任务完成时退出。

你必须弄清楚他们的类路径,以及系统上java二进制文件的位置,但这是可行的。

我认为您甚至可以通过Process.waitFor()完成通知。

答案 1 :(得分:3)

如果查看ant源代码,当forktrue时,它只包含Execute任务,最终,被调用的代码为< / p>

Runtime.getRuntime().exec(cmd, env);

下载并查看org.apache.tools.ant.taskdefs.Javaorg.apache.tools.ant.taskdefs.Execute的源代码将为您提供一些很好的指针,帮助您找到以独立于平台的方式运行的可执行文件的位置等。

答案 2 :(得分:0)

我认为你可以直接使用Ant API ... Ant可以直接在Java类中使用。 Javadoc可以二进制分发。