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