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

JDK 10:从Java访问Java应用程序的进程ID相关推荐

  1. jdk只有一个java进程_JDK 10:从Java访问Java应用程序的进程ID

    jdk只有一个java进程 StackOverflow.com上一个普遍的问题是:" Java程序如何获得自己的进程ID? 与该问题相关的几个答案包括解析ManagementFactory返 ...

  2. Java的知识点25——程序、进程与线程 || 线程的创建和启动

    程序.进程与线程 进程的特点:动态性.并发性.独立性 并发和并行的区别 并发:多个CPU同时执行多个任务 并行:一个CPU(采用时间片)同时执行多个任务 注:很多多线程是模拟出来的,真正的多线程是指有 ...

  3. java中bash应用_在bash脚本中查找java应用程序的进程ID(以查看目标应用程序是否已在运行)...

    我知道获取进程ID有一百万个问题,但这个问题似乎是独一无二的.谷歌没有给我答案,所以我希望stackexhange会帮助而不是关闭这个问题. 当涉及Java时,找到进程ID似乎比较棘手(pgrep不起 ...

  4. 诚之和:在 Linux 和 Windows 中快速找到 Java 应用程序进程 ID

    在这篇文章中,我们将讨论如何快速找到您的 Java 应用程序进程 ID.对于某些监控工具(如​yCrash ​),您需要将应用程序进程 ID 作为输入传递.如果您想查找包含多个不同选项的更详细的帖子来 ...

  5. JDK 10 的 109 项新特性

    来源:开源中国, www.oschina.net/translate/109-new-features-in-jdk-10 虽然感觉 JDK9 发布才仅仅几周的时间,然而,随着新的 OpenJDK 的 ...

  6. pgrep java是什么意思_pgrep查找正在运行的进程ID

    pgrep是一个命令行实用程序,根据给定的条件查找正在运行的程序的进程id.它可以是完整的或部分的进程名.运行该进程的用户或其他属性. 如何使用pgrep命令 语法: pgrep [options] ...

  7. linux java jdk_神级程序员教你如何10分钟在Linux上安装java的JDK?

    在开始下载安装之前,我们先做几个准备工作: 检查系统是否安装了java并显示版本: # java -version 使用以上命令可以显示,如果说找不到即没有安装,可以使用: # sudo apt-ge ...

  8. Java JDK 10会有什么期望

    由于我们刚刚习惯于9月发布的Java 9,因此距离下一代Java的发布只有几个月的时间了. 就在本月,计划中的Java Development Kit 10升级已进入开发的主要减速阶段. 在第一个初始 ...

  9. Java JDK 10:下一代 Java 有哪些新特性?

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 工欲善其事,必先利其器.作为老牌军 Java 在发行二十多年的今天,战胜了 C 和 C++, ...

最新文章

  1. 原生JS修改html内容不影响绑定的点击事件 请认准insertAdjacentHTML、insertAdjacentText方法
  2. jquery php 抽奖,jquery实现抽奖系统
  3. 网页设计千千万,网站建设万万千
  4. 采购订单检查/保存BADI使用
  5. 寄存器分配图着色_寄存器分配
  6. hdoj 1247 Hat’s Words(字典树)
  7. matlab save txt 乱码,matlab代码或中文复制到word就变成乱码怎么办?
  8. Google是否投资你,得看AI支持不支持
  9. python入门基础2 if语句 while循环 for循环
  10. 【ArcGIS|空间分析】求年度NDVI最大值图像和NDVI最大值出现日期图像
  11. 阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_3 配置解决中文乱码的过滤器
  12. codeblocks 16.01 汉化包下载地址及方法
  13. 微信小程序的在线学习每日签到打卡 项目源码介绍
  14. 解读《美国国家BIM标准》– BIM能力成熟度模型(十一)
  15. PHP中用while的用法,php while语句的用法
  16. ewebeditor 3.8php漏洞,eWebEditor v3.8 列目录漏洞【asp版本】
  17. postman支持https、安卓抓包
  18. 测试开发知识总结(一)
  19. SHELL脚本下获取文件时间转换时间戳,使用时间戳计算日期差
  20. SimulinkSTM32开发(一)开发环境搭建

热门文章

  1. 漫画:什么是冒泡排序
  2. (十)Spring 与 MVC 框架整合
  3. 如何解决vuepress部署出现样式问题
  4. bladex实现单点登录
  5. Hibernate中使用Criteria查询及注解——( EmpCondition)
  6. 2016蓝桥杯省赛---java---C---10(密码脱落)
  7. 希尔排序+移位法(吊打交换法)
  8. mybatis_user_guide(5) 动态 SQL
  9. 算法设计与分析:(二)动态规划
  10. 索引---B+Tree