在Java 9中,可以通过本机调用检索进程的PID ,并且可以通过ProcessHandle实现。我们还可以检索有关当前正在运行的Java Process(JVM)和Info(ProcessHandle的内部类)的信息 ,其中包含有关该进程的详细信息。我们还可以返回系统中所有当前正在运行的进程的快照 。
import java.lang.ProcessHandle.Info; public class ProcessAPIChanges { public void detailedAPIInfo(ProcessHandle processHandle) { Info processInfo = processHandle.info(); System.out.println("Detailed Process Info is Provided Below: "); System.out.println("[Executable Name] " + processInfo.command().get()); System.out.println("[User Name] " + processInfo.user().get()); System.out.println("[Start Time] " + processInfo.startInstant().get().toString()); } public static void main(String args[]) { System.out.println("Process API Changes (Core Library) "); ProcessAPIChanges processAPIChanges = new ProcessAPIChanges(); ProcessHandle processHandle = ProcessHandle.current(); System.out.println("[Current Process Id] " + processHandle.pid()); processAPIChanges.detailedAPIInfo(processHandle); ProcessHandle.allProcesses() .filter(ph -> ph.info().command().isPresent()) .limit(4).forEach((process) -> processAPIChanges.detailedAPIInfo(process)); } }
输出结果
Process API Changes (Core Library) [Current Process Id] 5724 Detailed Process Info is Provided Below: [Executable Name] C:\Program Files\Java\jdk-9.0.4\bin\java.exe [User Name] Nhooo\User [Start Time] 2020-04-01T07:35:43.152Z Detailed Process Info is Provided Below: [Executable Name] C:\WINDOWS\System32\taskhostex.exe [User Name] Nhooo\User [Start Time] 2020-04-01T04:14:36.241Z Detailed Process Info is Provided Below: [Executable Name] C:\Program Files\Synaptics\SynTP\SynTPEnh.exe [User Name] Nhooo\User [Start Time] 2020-04-01T04:14:36.257Z Detailed Process Info is Provided Below: [Executable Name] C:\WINDOWS\explorer.exe [User Name] Nhooo\User [Start Time] 2020-04-01T04:14:36.335Z Detailed Process Info is Provided Below: [Executable Name] C:\Program Files (x86)\Dell Wireless\Bluetooth Suite\BtvStack.exe [User Name] Nhooo\User [Start Time] 2020-04-01T04:14:51.594Z