Java 9 Process API: Principais Melhorias e Novos Recursos
No Java 9, a Process API, responsável por controlar e gerenciar processos do sistema operacional, foi aprimorada consideravelmente. A classe ProcessHandle agora fornece: ID nativo do processo, hora de início, tempo de CPU acumulado, argumentos, comando, usuário, processo pai e descendentes. Também fornece métodos para verificar vivacidade de processos e destruí-los. Tem método onExit, onde CompletableFuture pode executar ação assincronamente quando o processo termina.
Tester.java
import java.time.ZoneId;
import java.util.stream.Stream;
import java.util.stream.Collectors;
import java.io.IOException;
public class Tester {
public static void main(String[] args) throws IOException {
ProcessBuilder pb = new ProcessBuilder("notepad.exe");
String np = "Not Present";
Process p = pb.start();
ProcessHandle.Info info = p.info();
System.out.printf("Process ID: %s%n", p.pid());
System.out.printf("Command name: %s%n", info.command().orElse(np));
System.out.printf("Command line: %s%n", info.commandLine().orElse(np));
System.out.printf("Start time: %s%n", info.startInstant()
.map(i -> i.atZone(ZoneId.systemDefault()).toLocalDateTime().toString()).orElse(np));
System.out.printf("Arguments: %s%n", info.arguments()
.map(a -> Stream.of(a).collect(Collectors.joining(" "))).orElse(np));
System.out.printf("User: %s%n", info.user().orElse(np));
}
}
Saída
Process ID: 5800
Command name: C:\Windows\System32\notepad.exe
Command line: Not Present
Start time: 2017-11-04T21:35:03.626
Arguments: Not Present
User: administrator
A nova Process API torna muito mais fácil inspecionar e gerenciar processos nativos do Java.
Java
- Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
- Comentários em Java: Tipos, Uso e Boas Práticas
- Dominando o Loop for Aprimorado em Java: Sintaxe, Exemplos e Boas Práticas
- Dominando Strings em Java: Criação, Métodos e Boas Práticas
- Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
- Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
- Dominando Try-With-Resources em Java: Gerenciamento Automático de Recursos Explicado
- Anotações em Java Explicadas: Tipos, Posicionamento e Exemplos Práticos
- Asserções em Java: Guia Prático para Detectar Bugs e Garantir Confiabilidade do Código
- Java 9 (JDK 9) – Principais Recursos e Benefícios