Java 9 Process API quản lý, kiểm soát OS process. ProcessHandle cung cấp: native PID, start time, CPU time, arguments, command, user, parent process, descendants. Kiểm tra liveness, destroy process. Lấy tất cả ProcessHandle dưới dạng stream bằng allProcesses().
Ví dụ: Liệt kê tất cả process
import java.util.stream.Stream;
import java.util.Optional;
public class AllProcessesTest {
public static void main(String args[]) throws InterruptedException {
System.out.println("---------------------------");
System.out.println("All Processes:");
Stream<ProcessHandle> processStream = ProcessHandle.allProcesses();
processStream.forEach(process -> printInfo(process));
}
private static void printInfo(ProcessHandle processHandle) {
System.out.println("---------");
System.out.println("Id: " + processHandle.pid());
System.out.println("isAlive(): " + processHandle.isAlive());
System.out.println("number of childrens: " + processHandle.children().count());
System.out.println("isSupportsNormalTermination(): " + processHandle.supportsNormalTermination());
ProcessHandle.Info processInfo = processHandle.info();
System.out.println("Info: " + processInfo.toString());
System.out.println("Info arguments().isPresent(): " + processInfo.arguments().isPresent());
System.out.println("Info command().isPresent(): " + processInfo.command().isPresent());
System.out.println("Info totalCpuDuration().isPresent(): " + processInfo.totalCpuDuration().isPresent());
System.out.println("Info user().isPresent(): " + processInfo.user().isPresent());
}
}
Kết quả mẫu
--------------------------- All Processes: --------- Id: 7056 isAlive(): true number of childrens: 0 isSupportsNormalTermination(): false Info: [user: Optional[Tutorialspoint\User], cmd: C:\Program Files (x86)\Google\Chrome\Application\chrome.exe, startTime: Optional[2020-03-09T03:26:00.406Z], totalTime: Optional[PT1M52.15625S]] Info arguments().isPresent(): false Info command().isPresent(): true Info totalCpuDuration().isPresent(): true Info user().isPresent(): true ... (các process khác: Chrome, Firefox, conhost, java.exe...)
ProcessHandle.Info – Thông tin chi tiết
| Phương thức | Trả về | Mô tả |
|---|---|---|
command() | Optional<String> | Command line executable path |
arguments() | Optional<String[]> | Command line arguments |
startInstant() | Optional<Instant> | Thời gian start process |
totalCpuDuration() | Optional<Duration> | Tổng CPU time tiêu thụ |
user() | Optional<String> | User sở hữu process |
Ứng dụng thực tế
- Monitoring tool: Theo dõi process hệ thống.
- Process manager: Kill process treo, zombie.
- Resource analysis: CPU, memory per process.
- Container orchestration: Sidecar monitor process.
ProcessHandle.allProcesses() trả về snapshot tại thời điểm gọi – không live view. Cần gọi lại để refresh.