Java 9中的ProcessHandle接口的重要性是什么?

Java9中引入的ProcessHandle接口。它允许我们执行操作并检查相关进程的状态。此接口提供进程的本机进程ID(pid)、开始时间、累计CPU时间、参数、命令、用户、父进程和子进程。

ProcessHandle 接口允许我们执行以下操作。

  • 它返回一个ProcessHandle.Info,其中包含有关进程的更多信息

  • 进程的Pid

  • 如果还活着

  • 检索流程的直接子级的快照

  • 检索流程所有下降的快照

  • 检索所有当前正在运行的进程的快照

  • 允许进程被销毁

  • 当进度终止时,它将返回带有ProcessHandle CompletableFuture

ProcessHandle.Inf o包含来自过程快照的信息,包括:

  • 过程的指挥

  • 过程的参数

  • 过程的命令行

  • 进程的开始时间

  • 进程使用的CPU时间

  • 进程的用户

在下面的例子中,我们可以打印PID通过使用当前进程句柄的PID()方法,并且还检查进程当前通过使用运行的IsAlive()方法。

示例

import java.util.Optional;

public class ProcessHandleTest {
   public static void main(String args[]) {
      long pid = ProcessHandle.current().pid();

      ProcessHandle currentProcess = ProcessHandle.current();
      System.out.println("PID: " + currentProcess.pid());

      Optional<ProcessHandle> processHandle = ProcessHandle.of(pid);
      boolean isAlive = processHandle.isPresent() && processHandle.get().isAlive();
      System.out.println(isAlive);
   }
}

输出结果

PID: 6484
true