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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【强化学习】AC注释版本

## 强化学习 Actor-critic # 和PG比起来主要的变化: # 评估点由状态价值变成了TD_error,网络形式变了 # learn函数长得不一样 # action有一个优化函数,优化的是价值函数,希望最大化期望的reward,Critic网络也有一个reward&#xf…

python中sorted的用法append_Python中高阶函数sorted()用法

在Python中,有内置的排序方法:sorted(iterable, key, reverse)。Sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序。key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。print(s…

【强化学习】A3C原理

先解释一下什么叫异步、什么叫并发: **异步:**和同步相对,同步是顺序执行,而异步是彼此独立,在等待某个事件的过程中继续做自己的事,不要等待这一事件完成后再工作。线程是实现异步的一个方式,异…

天玑机器人颈椎_天玑骨科手术机器人亮相机器人大会 误差不到1毫米

千龙网北京8月22日讯(记者 詹婷婷)8月23日-27日,年度科技盛典--2017年世界机器人大会将登陆北京亦创国际会展中心。100多家国内外机器人顶尖企业将携手机器人亮相。大会期间将秀出人工智能系统、特种机器人、服务机器人、工业机器人以及智慧家居机器人等先进产品。参…

jboss eap 7.0_创建委托登录模块(用于JBoss EAP 6.1)

jboss eap 7.0[如果只想查看代码,请向下滚动] 动机 在RHQ中,我们需要一个安全域,该域可用于通过容器管理的安全性来保护REST-api及其Web应用程序。 过去,我只是使用经典的DatabaseServerLoginModule对DatabaseServerLoginModule进…

cdn简单理解_简单地聊聊CDN原理作用及实现方法

释放双眼,带上耳机,听听看~!相信只要会网上冲浪的都会接触到CDN吧,今天我们来聊聊对CDN的理解,给大家作为参考,本文将会以简单的描述来解释相关原理,供大家理解,希望相关专业同学进行…

JDK 10:FutureTask获取一个toString()

我已经有很长时间了,对于大多数具有独特属性的Java类,开发人员应该花时间重写Object.toString() ,即使它只是通过IDE生成的实现或使用诸如Apache之类的库类来实现Commons Lang的ToStringBuilder 。 如果要手动实现toSt…

【强化学习】A3C代码注释版本

########################################## # A3C做出的改进: # 解决AC难以收敛的问题 # 不一样的地方: #import threading # import tensorflow as tf import tensorflow.compat.v1 as tftf.compat.v1.disable_eager_execution() import numpy as np …

用python做人脸识别的程序怎么做_手把手教你用Python实现人脸识别

作者:Kangvcar简书专栏:http://www.jianshu.com/u/d9c480744afd环境要求:Ubuntu17.10Python 2.7.14环境搭建:1. 安装 Ubuntu17.10 > 安装步骤在这里2. 安装 Python2.7.14 (Ubuntu17.10 默认Python版本为2.7.14)3. 安装 git 、c…

【强化学习】PPO代码注释版本

# PPO主要通过限制新旧策略的比率,那些远离旧策略的改变不会发生# import tensorflow as tf import tensorflow.compat.v1 as tf tf.compat.v1.disable_eager_execution() import numpy as np import matplotlib.pyplot as plt import gym# 定义一些超级参量 EP_MAX…

【强化学习】可视化学习tensorboard

tensorflow定义了一个图结构: 代码: a tf.constant(3.0, name"a")b tf.constant(4.0, name"b")c tf.add(a, b, name"add")var tf.Variable(tf.random_normal([2, 3], mean0.0, stddev1.0), name"variable"…

面向初学者的JSF 2.0教程

1.什么是JSF? JSF是Java Server Faces的首字母缩写。 它是一种服务器端处理技术,它允许将服务器端代码嵌入到网页中。 由于可以将服务器端处理和呈现代码嵌入网页本身,因此使项目的整体编码更加简单。 减少总体数量以及文件大小。 JSF包含2个…

篡改referer_HTTP_REFERER的用法及伪造

引言在php中,可以使用$_SERVER[‘HTTP_REFERER’]来获取HTTP_REFERER信息,关于HTTP_REFERER,php文档中的描述如下:“引导用户代理到当前页的前一页的地址(如果存在)。由 user agent 设置决定。并不是所有的用户代理都会设置该项&a…

华为nova7保密柜_华为发布nova8系列新品 轻松拍出Vlog黄金脸占比

2020年12月23日,华为nova8系列手机正式发布。作为深受年轻人喜爱的手机品牌之一,华为nova8系列此次延续其强大的前置视觉实力、强悍的设计性能以及独特的设计美学,带来业内首款专为Vlog拍摄设计的5G手机。随着短视频和Vlog的崛起,…

从拉格朗日乘数法到KKT条件

从拉格朗日乘数法到KKT条件 最近看论文遇到了Karush–Kuhn–Tucker (KKT)条件,想搞清楚这是个什么东东,因此就把这个东西认真学习一下并且分享出来,希望对大家有用。学习KKT就不得不先学习一下拉格朗日乘数法&#xf…

26.0.0-alpha1_WildFly 8.0.0.Alpha1的发布和一些历史

26.0.0-alpha1自从我们发布WildFly 8.0.0.Alpha1版本以来, 已经过去了大约2周。 该下载位于WildFly下载页面上 。 我敢肯定,你们中的许多人可能会想知道WildFly是什么,而其中一些知道它是什么的人可能不会知道已经发布了。 我将尝试回答其中的…

单机最大负载_分布式高可靠之负载均衡,今天看了你肯定会

到目前为止,我已经为你介绍了分布式起源、分布式协调与同步、分布式资源管理与负载调度、分布式计算技术、分布式通信技术和分布式数据存储。可以说,掌握了这些内容,基本上就掌握了分布式的关键技术。然而,只有可靠的分布式系统才…

【强化学习】一文带你理清强化学习

整理不易,希望留个赞再走哦!! 学习路线 这个图描述的比较清晰,蓝框里是整个强化学习的一些概念基础了,橙色是一些学习方法,可以针对性的选择一些,废话不多说,接下来就按照这个路线图…

了解Java缓冲池

了解Java缓冲池 缓冲池空间位于垃圾收集器管理的内存之外。 这是分配本地堆外内存的一种方法。 使用缓冲池有什么好处? 为了回答这个问题,让我们首先了解什么是字节缓冲区。 字节缓冲区 非直接缓冲区 ByteBuffer类附带了java.nio包。 它允许我们分配直接…

java 循环拼接字符串用分号隔开_Java 8中字符串拼接新姿势:StringJoiner

在为什么阿里巴巴不建议在for循环中使用””进行字符串拼接一文中,我们介绍了几种Java中字符串拼接的方式,以及优缺点。其中还有一个重要的拼接方式我没有介绍,那就是Java 8中提供的StringJoiner ,本文就来介绍一下这个字符串拼接…