JDK 10:从Java访问Java应用程序的进程ID

StackOverflow.com上一个普遍的问题是:“ Java程序如何获得自己的进程ID? 与该问题相关的几个答案包括解析ManagementFactory返回的String 。 getRuntimeMXBean() 。 getName() [但是可以提供“任意字符串”],使用ProcessHandle 。 getPid() [ JEP 102 ],使用Java Native Access (JNA),使用系统信息收集和报告程序 (SIGAR),使用JavaSysMon ,使用Java Native Runtime – POSIX ,通过调用Runtime来解析jps (或jcmd )的结果。 getRuntime() 。 exec(String)和其他方法。 JDK 10可能引入了最简单的方法,即通过RuntimeMXBean上的新方法来获取JVM进程的PID。

JDK-8189091 (“ MBean对PID的访问”)引入了RuntimeMXBean方法getPid ()作为JDK 10的默认接口方法 。 该问题将“问题”表示为:“平台MBean不提供任何API来获取正在运行的JVM的进程ID。 一些JMX工具依赖于RuntimeMXBean :: getName的热点实现,该实现返回<pid> @ <主机名>。” 该问题还提供了“解决方案”:“引入了新的API java.lang.management.RuntimeMXBean.getPid ,以便JMX工具可以直接获取进程ID,而不必依赖于实现细节RuntimeMXBean#getName().split("@")[0] 。”

下一个代码清单是一个简单的清单,它演示了如何在RuntimeMXBean上使用此新的RuntimeMXBean getPid()方法。

使用JDK 10的RuntimeMXBean.getPid()

final RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();
final long pid = runtime.getPid();
final Console console = System.console();
out.println("Process ID is '" + pid + "' Press <ENTER> to continue.");
console.readLine();

当上面的代码包含在可执行的main(String[])函数中并且从命令行执行该函数时,输出如下面的屏幕快照所示(该屏幕快照还包括用于验证PID是否正确的单独终端)通过jcmd)。

进程ID的long ,因此无需解析“任意字符串”。 这种方法也不需要第三方库或复杂的代码来确定当前Java进程的标识符。

这篇文章简要介绍了Java应用程序(用JDK 10或更高版本编写)确定自己的基础进程ID的最简单方法。

翻译自: https://www.javacodegeeks.com/2018/02/jdk-10-accessing-java-applications-process-id-java.html

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

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

相关文章

Java多线程(4)--线程的同步解决线程安全问题

多线程出现安全问题 问题的原因&#xff1a; 当多条语句在操作同一个线程共享数据时&#xff0c;一个线程对多条语句只执行了一部分&#xff0c;还没有执行完&#xff0c;另一个线程参与进来执行&#xff0c;导致共享数据的错误。 解决办法&#xff1a; 对多条操作共享数据的…

java中套接字,如何在java中获得一个开放的套接字?

在Java中,我如何获得一个开放的套接字&#xff1f;我有2个JFrame;在第一个JFrame中,我打开了Client socket的连接.在同一个JFrame中,我创建了另一个JFrame(JFrame2)的实例.现在我想从JFrame1获取相同的Socket到JFrame2继续与我的服务器Socket交谈&#xff1a;login.java(First …

Java多线程(5)--线程通信wait和notify

例题&#xff1a;使用两个线程打印 1-100。线程1, 线程2 交替打印。 解决&#xff1a;涉及wait()和notify()/notifyAll() class Communicate implements Runnable {private int number 1;Overridepublic void run() {while (true) {synchronized (this) {this.notify();if (…

matlab eig 复杂度,MATLAB中的eig函数

在MATLAB中&#xff0c;计算矩阵A的特征值和特征向量的函数是eig(A)&#xff0c;常用的调用格式有5种&#xff1a;Eeig(A)&#xff1a;求矩阵A的全部特征值&#xff0c;构成向量E。[V,D]eig(A)&#xff1a;求矩阵A的全部特征值&#xff0c;构成对角阵D&#xff0c;并求A的特征向…

spring常见面试问题_Spring面试问题

spring常见面试问题另外&#xff0c;请查看我们最新的文章69Spring面试问题与解答–最终清单 。 1&#xff09;什么是春天&#xff1f; 回答&#xff1a; Spring是控件和面向方面的容器框架的轻量级反转。 2&#xff09;解释春天&#xff1f; 回答&#xff1a; 轻巧&#x…

Java多线程(6)--Callable接口创建线程

与使用Runnable相比&#xff0c; Callable功能更强大些 ①相比run()方法&#xff0c;可以有返回值 ②方法可以抛出异常 ③支持泛型的返回值 ④需要借助FutureTask类&#xff0c;可以获取返回结果 Future接口 ①可以对具体Runnable、Callable任务的执行结果进行取消、查询是否完…

matlab谱系聚类图,如何看懂SPSS聚类分析的树状图/谱系图?

原创&#xff1a; 数据小兵 SPSS统计训练营SPSS聚类分析提供两种类别图形的输出&#xff0c;第一种是软件默认的“冰柱图”&#xff0c;形状类似于冬天屋檐上垂下的冰柱&#xff0c;因此得名。第二种是“树状图”&#xff0c;在新版本软件中也称谱系图&#xff0c;像一个横着生…

Java多线程(7)--线程池创建线程

经常创建和销毁、使用量特别大的资源&#xff0c;比如并发情况下的线程&#xff0c;对性能影响很大。 提前创建好多个线程&#xff0c;放入线程池中&#xff0c;使用时直接获取&#xff0c;使用完放回池中&#xff0c;可以避免频繁创建销毁、实现重复利用。 使用线程池好处&a…

在Google Cloud Platform的K8上运行Fn函数

最近&#xff0c;我在Functions和Project Fn中玩了很多游戏。 最终&#xff0c;我不得不离开笔记本电脑上的操场&#xff0c;进入真正的野生世界。 在K8s集群上运行Fn的想法对我来说很有吸引力&#xff0c;因此我决定在Prem或云中的某个地方进行操作。 在对如何在裸机上自行安装…

php判断对象属于哪个类,PHP instanceof:判断对象是否属于某个类

使用 PHP 中的 instanceof 运算符&#xff0c;可以判断一个对象是否属于某一个类&#xff0c;语法格式如下&#xff1a;对象名 instanceof 类名;【示例】使用 instanceof 判断一个对象是否属于某个类。class A{}class B{}$obj new A;var_dump($obj instanceof A);echo ;var_du…

Java常用类(1)--字符串相关类String、StringBuffer、StringBuilder全面知识

文章目录String类StringBuffer类StringBuilder类String&#xff1a;不可变的字符序列&#xff1b;底层使用char[]存储 StringBuffer&#xff1a;可变的字符序列&#xff1b;线程安全的&#xff0c;效率低&#xff1b;底层使用char[]存储 StringBuilder&#xff1a;可变的字符序…

hybbs接口php,HYBBS

#HYBBS官方地址: http://bbs.hyyyp.com论坛基于HYPHP框架开发MVC结构支持HOOK机制PDO操作SQL,支持众多数据库论坛特性服务器环境要求:支持子目录安装论坛PHP 5.3 包括5.3 , 5.3以上环境Apache || Nginx || IIS需要开启伪静态,否则无法安装~!数据库支持 : MYSQL , MSSQL ,Oracle…

Java常用类(2)--日期时间相关类Date、Calendar、LocalDateTime、Instant全面

文章目录java.lang.System类java.util.Date类java.sql.Date类java.text.SimpleDateFormat类java.util.Calendar(日历)类java.time类java.time.Instant类java.time.format.DateTimeFormatter 类其它APIjava.lang.System类 System类提供的public static long currentTimeMillis(…

apache camel_Apache Camel简介

apache camelApache Camel是著名的企业集成模式的开源实现。 Camel是一个路由和中介引擎&#xff0c;可帮助开发人员以各种特定于域的语言&#xff08;DSL&#xff09;&#xff08;例如Java&#xff0c;Spring / XML&#xff0c;scala等&#xff09;创建路由和中介规则。 骆驼…

oracle括号不区分中英,Oracle的sql语句,查询条件加括号与不加括号区别 -

例如:SELECT ename, job, deptnoFROM empWHERE deptno in (10, 20)AND (ename like ‘%I‘ OR job like ‘%ER‘);执行该sql&#xff0c;结果集如下&#xff1a;1 JONES MANAGER 202 CLARK MANAGER 10去掉上面sql查询条件中的括号&a…

Java常用类(3)--Java比较器Comparable、Comparator类

文章目录自然排序&#xff1a;java.lang.Comparable定制排序&#xff1a;java.util.Comparator自然排序&#xff1a;java.lang.Comparable Comparable接口强行对实现它的每个类的对象进行整体排序&#xff0c;这种排序被称为类的自然排序。 实现 Comparable 的类必须实现 com…

Angular5 JWT身份验证(Spring Boot安全性)

欢迎使用带有Spring Security的angular5 jwt身份验证。在本教程中&#xff0c;我们将在一个angular5单页应用程序中使用jwt身份验证创建一个完整的堆栈应用程序&#xff0c;该应用程序具有由spring boot支持并集成了spring security的后备服务器。带有集成了HttpInterceptor的示…

Java常用类(4)--System类

System类代表系统&#xff0c;系统级的很多属性和控制方法都放置在该类的内部&#xff0c;该类位于java.lang包。 由于该类的构造器是private的&#xff0c;所以无法创建该类的对象&#xff0c;也就是无法实例化该类。其内部的成员变量和成员方法都是static的&#xff0c;可以…

创新设计模式:原型模式

原型模式用于创建对象的副本。 这种模式非常有用&#xff0c;特别是当从头开始创建对象的成本很高时。 与builder &#xff0c; factory和abstract factory模式相比&#xff0c;它不会从头开始创建对象&#xff0c;而是会克隆/重新创建它。 与单例模式相比&#xff0c;它创建一…

oracle游标的实例,oracle游标实例

--游标----游标&#xff1a;当在PL/SQL块中执行查询语句和数据操作语句时&#xff0c;oracle会为其分配上下文区&#xff0c;游标是指向上下文区的指针。----显示游标&#xff1a;显示游标在PL/SQL块的声明部分声明&#xff0c;在执行部分或异常处理部分打开游标&#xff0c;提…