Java 9 API Process : Améliorations majeures et nouvelles fonctionnalités
L'API Process de Java 9 est considérablement améliorée pour contrôler et gérer les processus du système d'exploitation.
La classe ProcessHandle fournit désormais :
- ID de processus natif (
pid()) - Heure de démarrage (
startInstant()) - Temps CPU accumulé
- Arguments, commande, utilisateur
- Processus parent et descendants
- Vérification de vitalité (
isAlive()) - Destruction (
destroy(),destroyForcibly()) onExit():CompletableFuturepour action asynchrone à la fin du processus
Exemple : informations sur un processus (Notepad)
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 = "Non disponible";
Process p = pb.start();
ProcessHandle.Info info = p.info();
System.out.printf("Process ID : %s%n", p.pid());
System.out.printf("Commande : %s%n", info.command().orElse(np));
System.out.printf("Ligne de commande : %s%n", info.commandLine().orElse(np));
System.out.printf("Heure de début : %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("Utilisateur : %s%n", info.user().orElse(np));
}
}
Sortie typique (Windows)
Process ID : 5800
Commande : C:\Windows\System32\notepad.exe
Ligne de commande : Non disponible
Heure de début : 2017-11-04T21:35:03.626
Arguments : Non disponible
Utilisateur : administrator
Cette API moderne remplace l'ancienne Process limitée et permet une gestion fine des processus natifs depuis Java.
Java
- Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
- Commentaires Java : Types, utilisation et bonnes pratiques
- Maîtriser la boucle for améliorée en Java : Syntaxe, exemples et bonnes pratiques
- Maîtriser les chaînes de caractères en Java : Création, méthodes et bonnes pratiques
- Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
- Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
- Maîtriser le try-with-resources Java : gestion automatique des ressources expliquée
- Annotations Java expliquées : types, placement et exemples pratiques
- Assertions Java : guide pratique pour détecter les bugs et assurer la fiabilité du code