Java9 Process API改进
1 Java9 Process API的介绍
Java改进了Java 9版本中的Process API,该API有助于管理和控制操作系统进程。
在早期版本中,使用Java编程来管理和控制操作系统进程非常复杂。现在,添加了新的类和接口来执行此任务。
2 Java9 Process API新增方法
下表中列出了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>以终止该进程。 |
添加了新的接口ProcessHandle和ProcessHandle.Info。
3 Java9 ProcessHandle接口的介绍
ProcessHandle帮助处理和控制过程。我们可以监控流程,列出其子级,获取信息等。
此接口包含静态工厂方法,这些方法返回基于值,不可变且线程安全的实例。
4 Java9 ProcessHandle接口的声明
public interface ProcessHandle extends Comparable<ProcessHandle>
5 Java9 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) | 如果其他对象为非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。 |
6 Java9 ProcessHandle.Info接口的介绍
ProcessHandle.Info接口被添加到Java 9中,并用于提供有关该过程的信息。它是ProcessHandle接口的内部接口。
7 Java9 ProcessHandle.Info接口的声明
public static interface ProcessHandle.Info
8 Java9 ProcessHandle.Info接口的方法
修饰符 | 方法 | 描述 |
---|---|---|
Optional<String[]> | arguments() | 返回该过程的参数的字符串数组。 |
Optional<String> | command() | 返回进程的可执行路径名。 |
Optional<String> | commandLine() | 返回进程的命令行。 |
Optional<Instant> | startInstant() | 返回过程的开始时间。 |
Optional<Duration> | totalCpuDuration() | 返回该进程累计的总cputime。 |
Optional<String> | user() | 返回该过程的用户。 |
9 Java9 Process API的案例
/**
* 一点教程网: http://www.yiidian.com
*/
public class ProcessApiExample {
public static void main(String[] args) {
ProcessHandle currentProcess = ProcessHandle.current(); // Current processhandle
System.out.println("Process Id: "+currentProcess.pid()); // Process id
System.out.println("Direct children: "+ currentProcess.children()); // Direct children of the process
System.out.println("Class name: "+currentProcess.getClass()); // Class name
System.out.println("All processes: "+ProcessHandle.allProcesses()); // All current processes
System.out.println("Process info: "+currentProcess.info()); // Process info
System.out.println("Is process alive: "+currentProcess.isAlive());
System.out.println("Process's parent "+currentProcess.parent()); // Parent of the process
}
}
输出结果为:
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]
热门文章
优秀文章