Ant Java task提供fork
参数,根据定义“如果启用,则触发另一个VM中的类执行”。当我们处理大量数据时,设置此参数可以避免我们耗尽Java堆空间
我们希望能够通过Java类做同样的事情。实现fork
提供的功能的最佳方法是什么?
答案 0 :(得分:8)
执行另一个java进程。例如,通过使用ProcessBuilder类。
http://java.sun.com/javase/6/docs/api/java/lang/ProcessBuilder.html
您可以根据需要运行任意数量的工作进程。让他们拥有一个单独的主类,从主要类中完成任务,并在任务完成时退出。
你必须弄清楚他们的类路径,以及系统上java二进制文件的位置,但这是可行的。
我认为您甚至可以通过Process.waitFor()完成通知。
答案 1 :(得分:3)
如果查看ant
源代码,当fork
为true
时,它只包含Execute
任务,最终,被调用的代码为< / p>
Runtime.getRuntime().exec(cmd, env);
下载并查看org.apache.tools.ant.taskdefs.Java
和org.apache.tools.ant.taskdefs.Execute
的源代码将为您提供一些很好的指针,帮助您找到以独立于平台的方式运行的可执行文件的位置等。
答案 2 :(得分:0)
我认为你可以直接使用Ant API ... Ant可以直接在Java类中使用。 Javadoc可以二进制分发。