Concurrency Intermedio

Ispeziona e gestisci i processi OS con ProcessHandle.

✕ 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.
🔍

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
API Process moderna
Disponibile

Ampiamente disponibile dal JDK 9 (settembre 2017)

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.

Condividi 𝕏 🦋 in