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


ProcessHandle 接口在 Java 9 中引入。它允许我们执行操作并检查相关进程的状态。此接口提供进程的原生进程 ID (pid)启动时间、累积 CPU 时间、参数、命令、用户、父进程子进程

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

  • 它返回一个包含有关进程的更多信息的ProcessHandle.Info
  • 进程的 Pid
  • 它是否处于活动状态
  • 检索进程直接子进程的快照
  • 检索进程所有后代的快照
  • 检索所有当前正在运行的进程的快照
  • 允许销毁进程
  • 它返回一个包含ProcessHandleCompletableFuture,用于在进程终止时。


ProcessHandle.Info 包含进程快照中的信息,包括:

  • 进程的命令
  • 进程的参数
  • 进程的命令行
  • 进程的启动时间
  • 进程使用的 CPU 时间
  • 进程的用户

在下面的示例中,我们可以使用pid()方法打印当前 Process Handle 的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

更新于:2020-03-13

476 次查看

启动您的职业生涯

完成课程获得认证

开始
广告