Question

Ant Java fournit des paramètres fork, qui, par définition « si elle est activée déclenche l'exécution de la classe dans une autre machine virtuelle » . Comme nous avons affaire à une grande quantité de données, ce paramètre nous a sauvés de manquer d'espace de tas Java.
Nous voulons être en mesure de faire la même chose à travers une classe Java. Quelle serait la meilleure façon d'obtenir la fonctionnalité telle que fournie par <=>?

Était-ce utile?

La solution

exécuter un autre processus Java. En utilisant la classe ProcessBuilder, par exemple.

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

Vous pouvez exécuter autant de processus de travail que vous le souhaitez. Faites-les ayant une classe principale séparée, en faisant leurs tâches de cette classe principale, et quiting lorsque leur tâche est terminée.

Vous devez comprendre leur classpath, et l'emplacement des binaires Java sur le système, mais c'est faisable.

Je pense que vous pouvez même être averti quand ils terminent par Process.waitFor ().

Autres conseils

Si vous regardez le code source ant, quand est fork true, il enroule juste une tâche et éventuellement Execute, le code qui est appelé est

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

Téléchargement et avoir un regard sur le code source pour et org.apache.tools.ant.taskdefs.Java vous donnera org.apache.tools.ant.taskdefs.Execute quelques grands pointeurs pour trouver l'emplacement de l'exécutable pour lancer une plate-forme de manière indépendante, etc.

Je pense que vous pouvez directement utiliser l'API Ant ... Ant peut être utilisé directement dans une classe Java. Le Javadoc est disponible dans leur distribution binaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top