Process API Improvements ใน Java 9
Java 9 ปรับปรุงคลาส Process เพิ่มเมธอดใหม่ และเพิ่ม interface ProcessHandle และ ProcessHandle.Info สำหรับจัดการ process ของ OS
เมธอดใหม่ใน Process Class
- boolean supportsNormalTermination() - true ถ้า destroy() ทำ normal termination
- long pid() - คืน native process ID
- ProcessHandle toHandle() - คืน ProcessHandle สำหรับ process นี้
- Stream<ProcessHandle> children() - snapshot ของ child processes โดยตรง
- Stream<ProcessHandle> descendants() - snapshot ของ descendant processes ทั้งหมด
- ProcessHandle.Info info() - snapshot ข้อมูลของ process
- CompletableFuture<ProcessHandle> onExit() - CompletableFuture สำหรับ termination
ตัวอย่างการใช้งาน
public class ProcessTest {
public static void main(String args[]) {
ProcessHandle processHandle = ProcessHandle.current();
ProcessHandle.Info processInfo = processHandle.info();
System.out.println(processHandle.pid());
System.out.println(processHandle.parent());
System.out.println(processInfo.arguments().isPresent());
System.out.println(processInfo.command().isPresent());
System.out.println(processInfo.command().get().contains("tutorialspoint"));
System.out.println(processInfo.startInstant().isPresent());
}
}
Output
4892 Optional[7788] false true false true
ProcessHandle และ ProcessHandle.Info
- ProcessHandle - ระบุและควบคุม native process, ตรวจสอบ liveness, destroy process
- ProcessHandle.Info - ข้อมูล snapshot: command, arguments, start time, CPU time, user, etc.
สรุป
Process API ใน Java 9 ทำให้จัดการ OS processes ได้ง่ายและครบครันขึ้นมาก ไม่ต้องพึ่ง native code หรือ library ภายนอก