蚂蚁的Java任务提供fork参数,其通过定义“如果已启用触发另一VM类执行” 。当我们正在处理大量的数据,设置此参数运行了Java堆空间救了我们。结果 我们希望能够通过Java类来这样做。什么是实现功能的最佳途径,通过fork提供?

有帮助吗?

解决方案

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

http://java.sun.com/ JavaSE的/ 6 /文档/ API /爪哇/郎/ ProcessBuilder.html

如你愿意,你可以运行尽可能多的工作进程。让他们有一个单独的主类,从主类做他们的工作,并在完成自己的任务在quiting。

你必须弄清楚自己的类路径,并在系统上的Java二进制文件的位置,但是这是可行的。

我想你甚至可以通知时,他们通过Process.waitFor()完成。

其他提示

如果你看一下ant源代码,当forktrue,那么它只是包装了一个Execute任务,最终,被调用的代码是

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

下载以及具有浏览一下org.apache.tools.ant.taskdefs.Javaorg.apache.tools.ant.taskdefs.Execute源代码会给你找到的可执行文件的位置,以独立于平台的方式运行,等等一些伟大的三分球。

我觉得你可以直接使用Ant API ...蚁可以在Java类中直接使用。的Javadoc可在它们的二进制分布。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top