Originariamente inviato da gaetano_cont
ho un .exe da lanciare.... deve essere lanciato da java e deve lavorare in background, in più devo sapere quando termina (devo ancora decidere se il programma in java deve attendere o meno la fine esecuzione del .exe)
codice:
public class Prova {
public static void main(String[] args) {
Thread t = new Thread(new Esecutore());
t.start();
System.out.println("Thread esecutore avviato");
}
private static class Esecutore implements Runnable {
public void run() {
try {
Runtime rt = Runtime.getRuntime();
Process p = rt.exec("notepad.exe");
System.out.println("Notepad avviato");
p.waitFor();
System.out.println("Notepad terminato");
} catch (Exception e) {
System.err.println(e);
}
}
}
}
Il nocciolo di tutto questo è quel t.start() che mette il thread in stato "runnable" ovvero schedulabile.
Ma lo start() è praticamente brevissimo, ritorna immediatamente. Vuol dire che il thread in cui sei in quel momento (quello che ha invocato start() ) può continuare tranquillamente per i fatti suoi e un altro "flusso di esecuzione" verrà eseguito, anch'esso per i fatti suoi per eseguire il contenuto del run().