Java 9:对Process API的增强
Java 9对Process API进行了各种改进,用于控制和管理操作系统进程。
获取有关流程的信息
有一个新的ProcessHandle
类,提供了进程的pid,父级和后代,以及有关开始时间和累积CPU时间的信息。
jshell> Process p = new ProcessBuilder("stress", "--cpu", "4", "--timeout", "5").start();
p ==> Process[pid=5572, exitValue="not exited"]jshell> p.pid()
$2 ==> 5572jshell> p.info().user()
$3 ==> Optional[fahd]jshell> p.info().command()
$4 ==> Optional[/usr/bin/stress]jshell> p.info().commandLine()
$5 ==> Optional[/usr/bin/stress --cpu 4 --timeout 120]jshell> Arrays.toString(p.info().arguments().get())
$6 ==> "[--cpu, 4, --timeout, 120]"jshell> p.info().startInstant()
$7 ==> Optional[2018-02-25T16:38:56.742Z]jshell> p.info().totalCpuDuration().get().toMillis()
$8 ==> 0
奇怪的是,无论我运行什么命令, totalCpuDuration
始终返回0(持续时间字符串为“ PT0S”)。
请注意,在上面的示例中,我正在调用Linux stress
命令。 这是在系统上施加某种压力(例如创建cpu负载)的有用工具。
列出所有正在运行的进程
静态ProcessHandle.allProcesses()
方法返回当前进程可见的所有进程的流。
ProcessHandle.allProcesses().map(ProcessHandle::info).map(ProcessHandle.Info::commandLine).flatMap(Optional::stream).forEach(System.out::println)
进程退出时触发功能
当进程终止时,可以使用Process.onExit
方法调度功能。 此方法返回CompletableFuture
,其中包含可以调用以调度函数的多种方法。 这是一个例子:
Process proc = new ProcessBuilder("sleep", "10").start();
proc.onExit().thenAccept(p -> System.out.println("Process " + p.pid() + " exited with " + p.exitValue()));
另外,要等待进程终止,可以调用Process.onExit().get()
。
翻译自: https://www.javacodegeeks.com/2018/02/java-9-enhancements-process-api.html
Java 9:对Process API的增强相关推荐
- Java 9:Process API的增强
Java 9对Process API进行了各种改进,用于控制和管理操作系统进程. 获取有关流程的信息 有一个新的ProcessHandle类,提供了进程的pid,父级和后代,以及有关开始时间和累积CP ...
- Java 9:流API的增强
Java 9向Stream接口添加了4种新方法: 1. dropWhile dropWhile方法类似于skip方法,但使用Predicate而不是固定的整数值. 当Predicate为true时,它 ...
- atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97
atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97 1. 实现html5化界面的要解决的策略1 1.1. Js交互1 1.2. 动态参 ...
- java swing调用H5_atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97...
atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97 1.实现html5化界面的要解决的策略 1.1.Js交互 Firefox与Chro ...
- 在JShell中尝试Java9 HTTP客户端和Process API
这篇文章继续了My My Java 9 Features博客文章中对Java9功能的探索. 在这里,我们用在Java9 HTTP / 2客户端和进程API试验JShell HTTP / 2客户端 HT ...
- Java接口的防御性API演进
API的发展绝对是不平凡的. 只有少数几个需要处理的事情. 我们大多数人每天都在使用内部专有API. 现代IDE附带了很棒的工具,可以分解,重命名,上拉,下推,间接,委托,推断,泛化我们的代码伪像. ...
- Java调用高德地图API根据详细地址获取经纬度
Java调用高德地图API根据详细地址获取经纬度 官方API:https://lbs.amap.com/api/webservice/guide/api/georegeo * Web服务API 地理/ ...
- process_在JShell中尝试Java9 HTTP客户端和Process API
process 这篇文章继续了My My Java 9 Features博客文章中对Java9功能的探索. 在这里,我们用在Java9 HTTP / 2客户端和进程API试验JShell HTTP / ...
- 【错误记录】Android 中调用 Process 命令行执行指令 ( java.lang.IllegalThreadStateException: process hasn‘t exited )
文章目录 一.报错信息 二.解决方案 一.报错信息 2021-05-07 13:24:24.672 29512-29512/kim.hsl.a7_zip E/AndroidRuntime: FATAL ...
最新文章
- 度学习实践:如何使用Tensorflow实现快速风格迁移?
- 二分查找的实现---java版本
- 英特尔cpu发布时间表_英特尔10nm芯片开始大规模出货,先进制程时间表浮出水面...
- imclearboder matlab,Lucas
- 1042 mysql57_一次处理DB2宕机的实战经历(SQL1042C )
- ssh 免密登录并用脚本群起服务
- java struct 简单案列_spring与struts简单整合案例
- [转]Visual Studio 2010 MSDN 文件位置及安装注意事项
- Matlab 中文版下载,安装图文教程
- 判断最小生成树的唯一性
- 程序设计c语言高速公路收费标准,高速公路收费系统c语言课程设计报告分解.docx...
- linux程序设计学习心得,几点学习Linux编程的建议
- 免费思维导图软件分享
- WIN10系统如何取消右下角的通知菜单,通知图标
- Excel PivotTable 使用心得手顺分享(一)
- 编程帮助小明计算地铁票价(C++)
- 计算机云计算论文范文,云计算环境下计算机管理系统论文
- VSCode升级后启动不了~
- 水安ABC考试多选练习题库(6)
- 基于VB中WINSOCK控件的网上象棋系统的实现