Concurrency Intermedio

Inspecciona y gestiona procesos del sistema operativo 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()));
¿Ves un problema con este código? Cuéntanos.
🔍

Información completa

Accede al PID, comando, argumentos, hora de inicio, uso de CPU.

🌳

Árbol de procesos

Navega entre padre, hijos y descendientes.

📊

Monitoreo

onExit() devuelve un CompletableFuture para monitoreo asíncrono.

Enfoque Antiguo
Runtime.exec()
Enfoque Moderno
ProcessHandle
Desde JDK
9
Dificultad
Intermedio
API moderna de procesos
Disponible

Ampliamente disponible desde JDK 9 (sept. 2017)

ProcessHandle proporciona PIDs, información del proceso (comando, argumentos, hora de inicio, uso de CPU), relaciones padre-hijo y destrucción de procesos. Se acabó depender de las partes internas no documentadas de Process.

Compartir 𝕏 🦋 in