API moderna de processos
Inspecione e gerencie processos do sistema operacional com ProcessHandle.
Comparação de Código
✕ 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()));
Viu um problema com este código? Nos avise.
Por que a forma moderna ganha
Informações completas
Acesse PID, comando, argumentos, hora de início e uso de CPU.
Árvore de processos
Navegue por pai, filhos e descendentes.
Monitoramento
onExit() retorna um CompletableFuture para monitoramento assíncrono.
Abordagem Antiga
Runtime.exec()
Abordagem Moderna
ProcessHandle
Desde o JDK
9
Dificuldade
Intermediário
Suporte JDK
API moderna de processos
Disponível
Amplamente disponível desde o JDK 9 (setembro de 2017)
Como funciona
ProcessHandle fornece PIDs, informações do processo (comando, argumentos, hora de início, uso de CPU), relacionamentos pai/filho e destruição de processos. Chega de usar internos não documentados de Process.
Documentação Relacionada