3

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

4

3 回答 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 forkis true,那么它只是包装了一个Execute任务,最终,被调用的代码是

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

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

于 2009-05-13T12:06:04.813 回答
0

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

于 2009-05-13T10:51:40.503 回答