题
蚂蚁的Java任务提供fork
参数,其通过定义“如果已启用触发另一VM类执行” 。当我们正在处理大量的数据,设置此参数运行了Java堆空间救了我们。结果
我们希望能够通过Java类来这样做。什么是实现功能的最佳途径,通过fork
提供?
解决方案
执行另一个java程序。通过使用的ProcessBuilder类,例如
http://java.sun.com/ JavaSE的/ 6 /文档/ API /爪哇/郎/ ProcessBuilder.html
如你愿意,你可以运行尽可能多的工作进程。让他们有一个单独的主类,从主类做他们的工作,并在完成自己的任务在quiting。
你必须弄清楚自己的类路径,并在系统上的Java二进制文件的位置,但是这是可行的。
我想你甚至可以通知时,他们通过Process.waitFor()完成。
其他提示
如果你看一下ant
源代码,当fork
是true
,那么它只是包装了一个Execute
任务,最终,被调用的代码是
Runtime.getRuntime().exec(cmd, env);
下载以及具有浏览一下org.apache.tools.ant.taskdefs.Java
和org.apache.tools.ant.taskdefs.Execute
源代码会给你找到的可执行文件的位置,以独立于平台的方式运行,等等一些伟大的三分球。
我觉得你可以直接使用Ant API ...蚁可以在Java类中直接使用。的Javadoc可在它们的二进制分布。
不隶属于 StackOverflow