JDK9新特性-改进进程管理 API
ProcessHandle 类
staticallProcesses()
|
返回当前进程可见的所有进程的快照
|
staticcurrent()
|
返回当前进程的ProcessHandle实例
|
staticof(longpid)
|
返回现有本机进程的Optional<ProcessHandle>
|
children()
|
返回进程的当前直接子进程的快照
|
compareTo(ProcessHandleother)
|
比较两个进程
|
descendants()
|
返回当前进程后代的快照
|
destroy()
|
请求杀死当前进程
|
destroyForcibly()
|
强制杀死该进程
|
equals(Objectother)
|
如果other对象为非null,且具有相同的实现,并且表示相同的系统进程,则返回true;否则返回false
|
hashCode()
|
返回此ProcessHandle的哈希值
|
info()
|
返回有关该进程的信息的快照
|
isAlive()
|
测试此ProcessHandle表示的进程是否处于活动状态
|
onExit()
|
当进程终止时返回CompletableFuture<ProcessHandle>
|
parent()
|
返回当前进程的父进程Optional<ProcessHandle>,因为当前进程可能是初始进程,所以父进程不一定存在
|
pid()
|
返回当前进程的系统进程的id
|
supportsNormalTermination()
|
如果destroy()正常终止进程,则返回true
|
范例
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
import java.time.ZoneId; import java.util.stream.Stream; import java.util.stream.Collectors; import java.io.IOException; public class ProcessHandleTester { public static void main(String[] args) throws IOException { // Windows 有效 ProcessBuilder pb = new ProcessBuilder( "notepad.exe" ); String np = "Not Present" ; Process p = pb.start(); ProcessHandle.Info info = p.info(); System.out.printf( "Process ID : %s%n" , p.pid()); System.out.printf( "Command name : %s%n" , info.command().orElse(np)); System.out.printf( "Command line : %s%n" , info.commandLine().orElse(np)); System.out.printf( "Start time: %s%n" , info.startInstant().map(i -> i.atZone(ZoneId.systemDefault()) .toLocalDateTime().toString()).orElse(np)); System.out.printf( "Arguments : %s%n" , info.arguments().map(a -> Stream.of(a).collect( Collectors.joining( " " ))).orElse(np)); System.out.printf( "User : %s%n" , info.user().orElse(np)); } } |
1
2
3
4
5
6
7
|
[[url=mailto:yufei @www .twle.cn]yufei @www .twle.cn[/url] java9]$ javac ProcessHandleTester.java && java ProcessHandleTester Process ID : 5800 Command name : C:\Windows\System32\notepad.exe Command line : Not Present Start time: 2017 - 11 -04T21: 35 : 03.626 Arguments : Not Present User: administrator |
JDK9新特性-改进进程管理 API的更多相关文章
- JDK9 新特性
JDK9 新特性目录导航 目录结构 模块化系统 jshell 多版本兼容JAR 接口的私有方法 改进try-with-resourcs 改进砖石操作符 限制使用单独下划线标识符 String存储结构变 ...
- JDK9新特性实战:流关闭新姿势
做Java开发的都知道,每个资源的打开都需要对应的关闭操作,不然就会使资源一直占用而造成资源浪费,从而降低系统性能. 关于资源的关闭操作,从JDK7-JDK9有了不少的提升及简化. JDK6 在JDK ...
- [Android 新特性] 改进明显 Android 4.4系统新特性解析
Android 4.3发布半年之后,Android 4.4随着新一代Nexus5一起出现在了用户的面前,命名为从之前的Jelly Bean(果冻豆)换成了KitKat(奇巧).这个新系统究竟都有怎样的 ...
- jdk9新特性之jShell
jdk9还没研究完,结果jdk10都停止维护了. 最近回顾jdk9,发现了一个新特性--jShell. jdk9是在2017年的9月份发布的,这是我开始感觉入门java的时间.从jdk10开始就是半年 ...
- JDK9新特性实战:简化流关闭新姿势。
做Java开发的都知道,每个资源的打开都需要对应的关闭操作,不然就会使资源一直占用而造成资源浪费,从而降低系统性能. 关于资源的关闭操作,从JDK7-JDK9有了不少的提升及简化. JDK6 在JDK ...
- java8新特性七-Date Time API
Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理. 在旧版的 Java 中,日期时间 API 存在诸多问题,其中有: 非线程安全 − java.ut ...
- Java8新特性之三:Stream API
Java8的两个重大改变,一个是Lambda表达式,另一个就是本节要讲的Stream API表达式.Stream 是Java8中处理集合的关键抽象概念,它可以对集合进行非常复杂的查找.过滤.筛选等操作 ...
- JAVA 8 主要新特性 ----------------(六)集合Stream API
一.简介Stream Java8中有两大最为重要的改变.第一个是 Lambda 表达式:另外一 个则是 Stream API(java.util.stream.*).Stream 是 Java8 中处 ...
- c++11 多线程新特性学习 (1) 管理线程
1.基础介绍 c++11中,线程是通过std::thread对象来开始的,用法为 #include<thread> //必须包含的头文件 void do_work(){ std::cout ...
随机推荐
- TX2Ubuntu16.04远程登录
1.在PC机与TX2都要同步时钟: sudo apt-get install chrony sudo ntpdate ntp.ubuntu.com 如果ntpdate有错误检查是否安装ntpdate ...
- .net学习——第一个程序
时隔3年.这个窗口 看到觉得特别亲切,舒服 昨天学了 一些概念 ref out 以及引用类型值类型.lambda 匿名方法 什么的 发现啊.当你知道 内存的 数值和对象的处理机制,js的匿名函数,钩 ...
- springboot跨域请求接口示例
一.项目架构 二.项目内容 1.GlobalCrosConfig.java package com.config; import org.springframework.context.annotat ...
- h5-伪元素-before和after
做一个门票或者邮票:效果图 1.html就是两个div 2.具体css代码 <style> /*左侧长方体基本样式*/ div:nth-of-type(1){ width: 300px; ...
- Python说文解字_杂谈08
1. Python变量到底是什么? Python和Java中的变量本质不一样,python的变量实质是一个指针 int str,便利贴 a = 1 # 1. a贴在1上面 # 2. 它的过程是先生成对 ...
- Activity组件:(一)通过显式意图和隐式意图来实现Activity间的跳转
一.通过显式意图来实现Activity间的跳转 显式意图是指在创建Intent对象时就指定接受者组件 /** * 下面是通过显式意图进行跳转,即明确写出要跳转到SecondActivity.class ...
- JAVA初学者——标识符命名规则及数据类型的转换
Hello!我是浩宇大熊猫~ 直接进入正题吧~ 1)标识符的命名规则. 标识符命名法有小驼峰命名法和大驼峰命名法两种,分别应用于方法.变量和类. 小驼峰命名法应用于方法和变量,主要有两个约定: 1.标 ...
- php IP地址转换
<?php $enip = ip2long('210.110.11.49); echo $enip."<br />";//-764540111 echo long ...
- javascript编程中极易出现的错误(个人)
2018-08-10 1,setInterval打错字写成ser 2,document.getElementById().innerHTML;HTML需要全部大写 3,在for循环中定义一个i时要记住 ...
- KVM---利用 libvirt+qemu-kvm 创建虚拟机
KVM 虚拟化已经是一个工业级的虚拟化解决方案了,以前都是直接下载 VMware,然后安装其他操作系统的,今天我们来体验一下自己动手创建一台虚拟机,这样你就会知道在KVM下创建一台虚拟机,是多么简单的 ...