Moderne Prozess-API
OS-Prozesse mit ProcessHandle inspizieren und verwalten.
Code-Vergleich
✕ 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()));
Problem mit diesem Code entdeckt? Sag uns Bescheid.
Warum der moderne Weg gewinnt
Vollständige Informationen
Zugriff auf PID, Befehl, Argumente, Startzeit, CPU-Nutzung.
Prozessbaum
Zwischen Eltern, Kindern und Nachkommen navigieren.
Überwachung
onExit() gibt ein CompletableFuture für asynchrone Überwachung zurück.
Alter Ansatz
Runtime.exec()
Moderner Ansatz
ProcessHandle
Seit JDK
9
Schwierigkeitsgrad
Fortgeschritten
JDK-Unterstützung
Moderne Prozess-API
Verfügbar
Weitgehend verfügbar seit JDK 9 (Sept. 2017)
Wie es funktioniert
ProcessHandle stellt PIDs, Prozessinformationen (Befehl, Argumente, Startzeit, CPU-Nutzung), Eltern-Kind-Beziehungen und Prozessbeendigung bereit. Keine undokumentierten Process-Interna mehr.
Zugehörige Dokumentation