在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