本文概述
- Java ProcessHandle接口
- Java ProcessHandle接口签名
- Java ProcessHandle.Info接口
- Java 9 Process API示例
在早期版本中, 使用Java编程来管理和控制操作系统进程非常复杂。现在, 添加了新的类和接口来执行此任务。
下表中将新方法添加到java.lang.Process类。
修饰符和类型 | 方法 | 描述 |
---|---|---|
boolean | supportsNormalTermination() | 如果destroy()的实现通常是终止进程, 则返回true, 否则返回false。 |
ProcessHandle | toHandle() | 它为流程返回一个ProcessHandle。 |
long | pid() | 它返回流程的本机流程ID。 |
Stream< ProcessHandle> | children() | 它返回该过程的直接子代的快照。 |
Stream< ProcessHandle> | descendants() | 它返回进程后代的快照。 |
ProcessHandle.Info | info() | 它返回有关该过程的信息的快照。 |
CompletableFuture< Process> | onExit() | 它返回CompletableFuture < Process> 以终止该进程。 |
Java ProcessHandle接口ProcessHandle帮助处理和控制过程。我们可以监控流程, 列出其子级, 获取信息等。
该接口包含静态工厂方法, 这些方法返回基于值, 不可变且线程安全的实例。
Java ProcessHandle接口签名
public interface ProcessHandle extends Comparable<
ProcessHandle>
此接口包含以下方法。
修饰符和类型 | 方法 | 描述 |
---|---|---|
静态Stream < ProcessHandle> | allProcesses() | 它返回当前进程可见的所有进程的快照。 |
Stream< ProcessHandle> | children() | 它返回该进程当前直接子级的快照。 |
int | compareTo(ProcessHandle other) | 它将比较此ProcessHandle与指定的ProcessHandle的顺序。 |
静态ProcessHandle | current() | 它为当前进程返回一个ProcessHandle。 |
Stream< ProcessHandle> | descendants() | 它返回进程后代的快照。 |
boolean | destroy() | 它要求终止该进程。 |
boolean | destroyForcibly() | 它要求将进程强行杀死。 |
boolean | equals(Object other) | 如果其他对象为非null, 具有相同的实现并表示相同的系统进程, 则返回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接口签名
public static interface ProcessHandle.Info
修饰符和类型 | 方法 | 描述 |
---|---|---|
Optional< String[]> | arguments() | 它返回该过程的参数的字符串数组。 |
Optional< String> | command() | 它返回进程的可执行路径名。 |
Optional< String> | commandLine() | 它返回进程的命令行。 |
Optional< Instant> | startInstant() | 它返回过程的开始时间。 |
Optional< Duration> | totalCpuDuration() | 它返回该进程累计的总cputime。 |
Optional< String> | user() | 它返回该过程的用户。 |
public class ProcessApiExample { public static void main(String[] args) {ProcessHandle currentProcess = ProcessHandle.current();
// Current processhandleSystem.out.println("Process Id: "+currentProcess.pid());
// Process id System.out.println("Direct children: "+ currentProcess.children());
// Direct children of the processSystem.out.println("Class name: "+currentProcess.getClass());
// Class nameSystem.out.println("All processes: "+ProcessHandle.allProcesses());
// All current processes System.out.println("Process info: "+currentProcess.info());
// Process infoSystem.out.println("Is process alive: "+currentProcess.isAlive());
System.out.println("Process's parent "+currentProcess.parent());
// Parent of the process }}
输出:
Process Id: 9111Direct children: java.util.stream.ReferencePipeline$2@6adca536Class name: class java.lang.ProcessHandleImplAll processes: java.util.stream.IntPipeline$1@28f67ac7Process info: [user: Optional[srcmini], cmd: /usr/lib/jvm/java-9-oracle/bin/java, args: [-Dfile.encoding=UTF-8, -classpath, /home/srcmini/irfan/java 9/java 9 programms/Java9Features/bin, ProcessApiExample], startTime: Optional[2017-11-18T06:30:57.940Z], totalTime: Optional[PT0.25S]]Is process alive: trueProcess's parent: Optional[7509]
推荐阅读
- Java 9模块系统
- Java 9新版本字符串方案
- Java 9新功能
- Java 9控制面板
- Java 9工厂方法
- Linux|在 Linux 上部署javaWeb项目+图文详解
- 操作系统|java web项目在linux部署、启动,查看系统配置常用的linux命令总结
- spring|《java版Spring Cloud分布式微服务电商》- 项目简介
- java|Linux常用命令 + Web程序部署