Domanda

Ant Java compito fornisce fork parametro, che, per definizione "se abilitato attiva l'esecuzione classe in un altro VM" . Come abbiamo a che fare con una grande quantità di dati, impostare questo parametro ci ha salvato dal corto di spazio heap Java.
Vogliamo essere in grado di fare lo stesso attraverso una classe Java. Quale sarebbe il modo migliore per ottenere la funzionalità fornita da <=>?

È stato utile?

Soluzione

Esegui un altro processo Java. Utilizzando classe ProcessBuilder, per esempio.

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

È possibile eseguire il maggior numero di processi di lavoro come si desidera. Farli avere una classe principale separata, facendo i loro compiti da quella classe principale, e quiting quando il loro compito è completato.

Si dovrà capire il loro percorso di classe, e la posizione di java binario sul sistema, ma questo è fattibile.

Penso che si possa anche una notifica quando si completa tramite Process.waitFor ().

Altri suggerimenti

Se si guarda il codice sorgente ant, quando fork è true, poi appena avvolge un compito Execute e, infine, il codice che viene chiamato è

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

Download e avere uno sguardo al codice sorgente per org.apache.tools.ant.taskdefs.Java e org.apache.tools.ant.taskdefs.Execute vi darà alcune ottime dritte a trovare la posizione del file eseguibile per l'esecuzione in modo indipendente dalla piattaforma, ecc.

Penso che si può usare direttamente l'API Ant ... Ant può essere utilizzato direttamente in una classe Java. Il Javadoc è disponibile nella loro distribuzione binaria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top