Java эквивалент вилки в задаче Java Ant? - PullRequest
3 голосов
/ 13 мая 2009

Задача Ant Java предоставляет параметр fork, который по определению "если включено, запускает выполнение класса в другой виртуальной машине" . Поскольку мы имеем дело с большим объемом данных, установка этого параметра избавила нас от нехватки кучи Java.
Мы хотим быть в состоянии сделать то же самое с помощью класса Java. Каков наилучший способ достижения функциональности, предоставляемой fork?

Ответы [ 3 ]

8 голосов
/ 13 мая 2009

Выполнить еще один процесс Java. Например, используя класс ProcessBuilder.

http://java.sun.com/javase/6/docs/api/java/lang/ProcessBuilder.html

Вы можете запускать столько рабочих процессов, сколько пожелаете. Сделайте так, чтобы они имели отдельный основной класс, выполняли свои задачи из этого основного класса и выходили из него, когда их задача выполнена.

Вы должны выяснить их путь к классу и расположение двоичного файла Java в системе, но это выполнимо.

Я думаю, вы даже можете получить уведомление, когда они завершатся через Process.waitFor ().

3 голосов
/ 13 мая 2009

Если вы посмотрите на исходный код ant, когда fork равен true, то он просто оборачивает задачу Execute и, в конце концов, вызываемый код будет

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

Загрузка и просмотр исходного кода для org.apache.tools.ant.taskdefs.Java и org.apache.tools.ant.taskdefs.Execute даст вам несколько полезных советов в поиске расположения исполняемого файла для независимой от платформы работы и т. Д.

0 голосов
/ 13 мая 2009

Я думаю, вы можете напрямую использовать Ant API ... Ant можно напрямую использовать в классе Java. Javadoc доступен в их бинарном выпуске.

...