Java 9 进程 API 改进2024 年 8 月 29 日 | 阅读 3 分钟 Java 在 Java 9 版本中改进了其进程 API,这有助于管理和控制操作系统进程。 在早期版本中,使用 Java 编程管理和控制操作系统进程很复杂。现在,添加了新的类和接口来执行此任务。 将新方法添加到 java.lang.Process 类中,如下表所示。 修饰符和类型 | 方法 | 描述 |
---|
boolean | supportsNormalTermination() | 如果 destroy() 的实现是正常终止进程,则返回 true,否则返回 false。 | ProcessHandle | toHandle() | 它为 Process 返回 ProcessHandle。 | long | pid() | 它返回进程的本机进程 ID。 | Stream<ProcessHandle> | children() | 它返回进程的直接子进程的快照。 | Stream<ProcessHandle> | descendants() | 它返回进程的后代进程的快照。 | ProcessHandle.Info | info() | 它返回有关进程的信息的快照。 | CompletableFuture<Process> | onExit() | 它返回一个 CompletableFuture<Process> 用于进程的终止。 |
添加了新的接口 ProcessHandle 和 ProcessHandle.Info。
Java ProcessHandle 接口ProcessHandle 有助于处理和控制进程。我们可以监视进程,列出其子进程,获取信息等。 此接口包含返回基于值的、不可变的和线程安全的实例的静态工厂方法。 Java ProcessHandle 接口签名此接口包含以下方法。 修饰符和类型 | 方法 | 描述 |
---|
static Stream<ProcessHandle> | allProcesses() | 它返回当前进程可见的所有进程的快照。 | Stream<ProcessHandle> | children() | 它返回进程的当前直接子进程的快照。 | int | compareTo(ProcessHandle other) | 它将此 ProcessHandle 与指定的 ProcessHandle 进行排序比较。 | static ProcessHandle | current() | 它返回当前进程的 ProcessHandle。 | Stream<ProcessHandle> | descendants() | 它返回进程的后代进程的快照。 | boolean | destroy() | 它请求终止该进程。 | boolean | destroyForcibly() | 它请求强制终止该进程。 | boolean | equals(Object other) | 如果其他对象为非空,实现相同,并且代表相同的系统进程,则返回 true;否则返回 false。 | int | hashCode() | 它返回此 ProcessHandle 的哈希码值。 | ProcessHandle.Info | info() | 它返回有关进程的信息的快照。 | boolean | isAlive() | 它测试由该 ProcessHandle 表示的进程是否存活。 | static Optional<ProcessHandle> | of(long pid) | 它返回一个 Optional<ProcessHandle> 用于现有的本机进程。 | CompletableFuture<ProcessHandle> | onExit() | 它返回一个 CompletableFuture<ProcessHandle> 用于进程的终止。 | Optional<ProcessHandle> | parent() | 它返回一个 Optional<ProcessHandle> 用于父进程。 | long | pid() | 它返回进程的本机进程 ID。 | boolean | supportsNormalTermination() | 如果 destroy() 的实现正常终止进程,则返回 true。 |
Java ProcessHandle.Info 接口它被添加到 Java 9 中,用于提供有关进程的信息。它是 ProcessHandle 接口的嵌套接口。 Java ProcessHandle.Info 接口签名 修饰符和类型 | 方法 | 描述 |
---|
Optional<String[]> | arguments() | 它返回进程的参数的字符串数组。 | Optional<String> | command() | 它返回进程的可执行文件路径名。 | Optional<String> | commandLine() | 它返回进程的命令行。 | Optional<Instant> | startInstant() | 它返回进程的启动时间。 | Optional<Duration> | totalCpuDuration() | 它返回进程的累积总 CPU 时间。 | Optional<String> | user() | 它返回进程的用户。 |
Java 9 进程 API 示例输出 Process Id: 9111
Direct children: java.util.stream.ReferencePipeline$2@6adca536
Class name: class java.lang.ProcessHandleImpl
All processes: java.util.stream.IntPipeline$1@28f67ac7
Process info: [user: Optional[javatpoint],
cmd: /usr/lib/jvm/java-9-oracle/bin/java, args: [-Dfile.encoding=UTF-8,
-classpath, /home/javatpoint/irfan/java 9/java 9 programms/Java9Features/bin,
ProcessApiExample], startTime: Optional[2017-11-18T06:30:57.940Z], totalTime: Optional[PT0.25S]]
Is process alive: true
Process's parent: Optional[7509]
|