Java 9 เพิ่ม ProcessHandle อินเทอร์เฟซ ประมวลผล API เพื่อปรับปรุงคลาสกระบวนการ อินสแตนซ์ของอินเทอร์เฟซ ProcessHandle ระบุกระบวนการในพื้นที่ที่ช่วยให้เราสามารถสืบค้น สถานะ กระบวนการ และการจัดการกระบวนการ และ ProcessHandle.Info ช่วยให้เราใช้รหัสท้องถิ่นได้เนื่องจากต้องการรับ PID ของกระบวนการในท้องถิ่น
ตัวสร้างกระบวนการ คลาสสามารถใช้เพื่อสร้างกระบวนการระบบปฏิบัติการแยกต่างหาก ในตัวอย่างด้านล่าง เราสามารถสร้างกระบวนการของ "แผ่นจดบันทึก" แอปพลิเคชันโดยใช้ ProcessBuilder ชั้นเรียน
ตัวอย่าง
<ก่อน> นำเข้า java.time.ZoneId; นำเข้า java.util.stream.Stream; นำเข้า java.util.stream.Collectors; นำเข้า java.io.IOException; คลาสสาธารณะ ProcessBuilderTest { โมฆะคงที่สาธารณะหลัก (สตริง args []) โยน IOException { ตัวสร้างกระบวนการ pb =ใหม่ ตัวสร้างกระบวนการ ("notepad.exe "); String np ="ไม่ปรากฏ"; กระบวนการ p =pb.เริ่ม(); ProcessHandle.Info info =p.info(); System.out.printf("Process ID :%s%n", p.pid() ); System.out.printf("ชื่อคำสั่ง :%s%n", info.command() .orElse(np)); System.out.printf("Command line :%s%n", info.commandLine() .orElse(np)); System.out.printf("เวลาเริ่มต้น:%s%n", info.startInstant().map (i -> i.atZone (ZoneId.systemDefault() ).toLocalDateTime() .toString()).orElse(np)); System.out.printf("อาร์กิวเมนต์ :%s%n", info.arguments() แผนที่ (a -> Stream.of (ก)สะสม (Collectors.joining(" "))).orElse(np)); System.out.printf("ผู้ใช้ :%s%n", info.user() .orElse(np)); }}ตัวอย่างด้านบนเปิดแอปพลิเคชั่นแผ่นจดบันทึกด้านล่าง
ผลลัพธ์
Process ID :3728Command name :C:\WINDOWS\System32\notepad.exeCommand line :Not Presentเวลาเริ่มต้น:2020-04-20T18:06:30.378Arguments :Not PresentUser :Tutorialspoint\User