Java如何获取当前进程ID以及所有Java进程的进程ID
发布时间 - 2026-01-11 01:42:43 点击率:次首先是获取当前Java运行的Java进程ID,这个是网上常见的,也就是Java程序自身将进程ID打印出来:
package com.test;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
public class Target {
public static void main(String[] args) throws InterruptedException {
System.out.println(getProcessID());
while(true) {
Thread.sleep(10000);
}
}
public static final int getProcessID() {
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
System.out.println(runtimeMXBean.getName());
return Integer.valueOf(runtimeMXBean.getName().split("@")[0])
.intValue();
}
}
运行结果:
2896@PC-20150603VRPL 2896
ManagementFactory是一个在运行时管理和监控Java VM的工厂类,它能提供很多管理VM的静态接口,比RuntimeMXBean;
RuntimeMXBean是Java虚拟机的运行时管理接口.
当前进程ID为2896。
但这种让Java进程自行打印ID的方式并不太好用,因为很多时候我们是需要在不修改代码另一个Java程序代码的情况下知道这个正在运行着的Java进程的ID,如果你也有这个需求,可以看一下下面的解决方法:
获取所有正在运行着的Java进程
package com.test;
import java.util.HashSet;
import java.util.Set;
import sun.jvmstat.monitor.MonitoredHost;
import sun.jvmstat.monitor.MonitoredVm;
import sun.jvmstat.monitor.MonitoredVmUtil;
import sun.jvmstat.monitor.VmIdentifier;
public class ProcessID {
public static void main(String[] args) throws Exception {
// 获取监控主机
MonitoredHost local = MonitoredHost.getMonitoredHost("localhost");
// 取得所有在活动的虚拟机集合
Set<?> vmlist = new HashSet<Object>(local.activeVms());
// 遍历集合,输出PID和进程名
for(Object process : vmlist) {
MonitoredVm vm = local.getMonitoredVm(new VmIdentifier("//" + process));
// 获取类名
String processname = MonitoredVmUtil.mainClass(vm, true);
System.out.println(process + " ------> " + processname);
}
}
}
运行结果:
2752 ------> 5172 ------> com.test.Target 5308 ------> com.test.ProcessID
这样,就可以根据类名找到进程号了。
MonitoredHost等类位于${JAVA_HOME}/lib/tools.jar
下面是一个可以直接根据类找到对应Java进程ID的方法:
package com.test;
import java.net.URISyntaxException;
import java.util.HashSet;
import java.util.Set;
import sun.jvmstat.monitor.MonitorException;
import sun.jvmstat.monitor.MonitoredHost;
import sun.jvmstat.monitor.MonitoredVm;
import sun.jvmstat.monitor.MonitoredVmUtil;
import sun.jvmstat.monitor.VmIdentifier;
public class ProcessID {
public static void main(String[] args) throws Exception {
int pid = getProcess(Target.class);
System.out.println("PID: "+pid);
}
public static int getProcess(Class<?> cls) throws MonitorException, URISyntaxException {
if(cls == null) {
return -1;
}
// 获取监控主机
MonitoredHost local = MonitoredHost.getMonitoredHost("localhost");
// 取得所有在活动的虚拟机集合
Set<?> vmlist = new HashSet<Object>(local.activeVms());
// 遍历集合,输出PID和进程名
for(Object process : vmlist) {
MonitoredVm vm = local.getMonitoredVm(new VmIdentifier("//" + process));
// 获取类名
String processname = MonitoredVmUtil.mainClass(vm, true);
if(cls.getName().equals(processname)) {
return ((Integer)process).intValue();
}
}
return -1;
}
}
运行结果:
PID: 5172
源码位于我的Github项目aoptracer的com.test包里
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# java
# 获取当前进程id
# 当前进程id
# 获取进程id
# Java进程cpu占用过高问题解决
# JAVA进程突然消失问题解决方案
# Linux服务器Java进程消失问题解决
# java生成jar包并且单进程运行的实例
# Java基础强化训练输入错误即结束进程
# 简述Java中进程与线程的关系_动力节点Java学院整理
# 详谈java线程与线程、进程与进程间通信
# SHELL脚本监控JAVA进程的代码
# java自带的工具Jstack截取进程中的堆栈信息
# 简要分析Java多进程编程的并发控制
# 浅谈Java多进程程序的运行模式
# 详解Java中多进程编程的实现
# java 进程是如何在Linux服务器上进行内存分配的
# 是一个
# 遍历
# 正在运行
# 如果你
# 也有
# 可以直接
# 看一下
# 好用
# 它能
# 解决方法
# 大家多多
# 包里
# 就可以
# 打印出来
# 号了
# 情况下
# 网上
# int
# final
# runtimeMXBean
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
Laravel如何优化应用性能?(缓存和优化命令)
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
在Oracle关闭情况下如何修改spfile的参数
微信小程序 HTTPS报错整理常见问题及解决方案
Laravel怎么实现验证码(Captcha)功能
Laravel如何使用Blade模板引擎?(完整语法和示例)
JS弹性运动实现方法分析
Laravel Docker环境搭建教程_Laravel Sail使用指南
Laravel怎么使用artisan命令缓存配置和视图
详解vue.js组件化开发实践
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
什么是javascript作用域_全局和局部作用域有什么区别?
如何选择可靠的免备案建站服务器?
如何在建站宝盒中设置产品搜索功能?
LinuxCD持续部署教程_自动发布与回滚机制
Laravel如何使用Livewire构建动态组件?(入门代码)
Laravel如何实现用户密码重置功能?(完整流程代码)
Laravel如何创建自定义中间件?(Middleware代码示例)
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
,怎么在广州志愿者网站注册?
Android自定义listview布局实现上拉加载下拉刷新功能
Laravel怎么上传文件_Laravel图片上传及存储配置
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
如何注册花生壳免费域名并搭建个人网站?
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理
Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
Laravel如何配置Horizon来管理队列?(安装和使用)
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
网站制作报价单模板图片,小松挖机官方网站报价?
如何为不同团队 ID 动态生成多个独立按钮
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
Laravel观察者模式如何使用_Laravel Model Observer配置
如何在Windows服务器上快速搭建网站?
Android okhttputils现在进度显示实例代码
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
如何快速搭建自助建站会员专属系统?
如何用虚拟主机快速搭建网站?详细步骤解析
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
如何破解联通资金短缺导致的基站建设难题?
下一篇:丹阳网站建设:打造地方特**户
下一篇:丹阳网站建设:打造地方特**户

