API Process moderna
Ispeziona e gestisci i processi OS con ProcessHandle.
Confronto Codice
✕ Java 8
Process p = Runtime.getRuntime()
.exec("ls -la");
int code = p.waitFor();
// no way to get PID
// no easy process info
✓ Java 9+
ProcessHandle ph =
ProcessHandle.current();
long pid = ph.pid();
ph.info().command()
.ifPresent(IO::println);
ph.children().forEach(
c -> IO.println(c.pid()));
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Informazioni complete
Accedi a PID, comando, argomenti, tempo di avvio, utilizzo CPU.
Albero dei processi
Naviga tra padre, figli e discendenti.
Monitoraggio
onExit() restituisce un CompletableFuture per il monitoraggio asincrono.
Approccio Vecchio
Runtime.exec()
Approccio Moderno
ProcessHandle
Dal JDK
9
Difficoltà
Intermedio
Supporto JDK
API Process moderna
Disponibile
Ampiamente disponibile dal JDK 9 (settembre 2017)
Come funziona
ProcessHandle fornisce PID, informazioni sul processo (comando, argomenti, tempo di avvio, utilizzo CPU), relazioni padre/figlio e distruzione del processo. Niente più accesso agli interni non documentati di Process.
Documentazione Correlata