摘要:獲取當(dāng)前進(jìn)程以及所有進(jìn)程的進(jìn)程首先是獲取當(dāng)前運(yùn)行的進(jìn)程,這個(gè)是網(wǎng)上常見的,也就是程序自身將進(jìn)程打印出來是一個(gè)在運(yùn)行時(shí)管理和監(jiān)控的工廠類,它能提供很多管理的靜態(tài)接口,比如是虛擬機(jī)的運(yùn)行時(shí)管理接口獲取所有正在運(yùn)行著的進(jìn)程獲取監(jiān)控主機(jī)取得所有在活
Java獲取當(dāng)前進(jìn)程ID以及所有Java進(jìn)程的進(jìn)程ID 首先是獲取當(dāng)前Java運(yùn)行的Java進(jìn)程ID,這個(gè)是網(wǎng)上常見的,也就是Java程序自身將進(jìn)程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(); } }
ManagementFactory是一個(gè)在運(yùn)行時(shí)管理和監(jiān)控Java VM的工廠類,它能提供很多管理VM的靜態(tài)接口,比如RuntimeMXBean;獲取所有正在運(yùn)行著的Java進(jìn)程
RuntimeMXBean是Java虛擬機(jī)的運(yùn)行時(shí)管理接口.
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 { // 獲取監(jiān)控主機(jī) MonitoredHost local = MonitoredHost.getMonitoredHost("localhost"); // 取得所有在活動(dòng)的虛擬機(jī)集合 Set> vmlist = new HashSet
MonitoredHost等類位于${JAVA_HOME}/lib/tools.jar
_
運(yùn)行結(jié)果:
2752 ------> 5172 ------> com.test.Target 5308 ------> com.test.ProcessID直接根據(jù)類找到對(duì)應(yīng)Java進(jìn)程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; } // 獲取監(jiān)控主機(jī) MonitoredHost local = MonitoredHost.getMonitoredHost("localhost"); // 取得所有在活動(dòng)的虛擬機(jī)集合 Set> vmlist = new HashSet根據(jù)類名稱找到對(duì)應(yīng)Java進(jìn)程ID的方法
package com.example.demo; import sun.jvmstat.monitor.*; import java.net.URISyntaxException; import java.util.HashSet; import java.util.Set; public class ProcessID2 { public static void main(String[] args) throws Exception { int pid = getProcess("cn.usr.demo.DemoApplication"); System.out.println("PID: " + pid); } public static int getProcess(String cls) throws MonitorException, URISyntaxException { if (cls == null) { return -1; } // 獲取監(jiān)控主機(jī) MonitoredHost local = MonitoredHost.getMonitoredHost("localhost"); // 取得所有在活動(dòng)的虛擬機(jī)集合 Set> vmlist = new HashSet
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/74381.html
摘要:獲取當(dāng)前進(jìn)程以及所有進(jìn)程的進(jìn)程首先是獲取當(dāng)前運(yùn)行的進(jìn)程,這個(gè)是網(wǎng)上常見的,也就是程序自身將進(jìn)程打印出來是一個(gè)在運(yùn)行時(shí)管理和監(jiān)控的工廠類,它能提供很多管理的靜態(tài)接口,比如是虛擬機(jī)的運(yùn)行時(shí)管理接口獲取所有正在運(yùn)行著的進(jìn)程獲取監(jiān)控主機(jī)取得所有在活 Java獲取當(dāng)前進(jìn)程ID以及所有Java進(jìn)程的進(jìn)程ID 首先是獲取當(dāng)前Java運(yùn)行的Java進(jìn)程ID,這個(gè)是網(wǎng)上常見的,也就是Java程序自身將...
摘要:父進(jìn)程調(diào)用創(chuàng)建子進(jìn)程。因而,一個(gè)進(jìn)程的第一個(gè)線程會(huì)隨著這個(gè)進(jìn)程的啟動(dòng)而創(chuàng)建,這個(gè)線程被稱為該進(jìn)程的主線程。另一方面,線程不可能獨(dú)立于進(jìn)程存在。終止線程線程可以通過多種方式來終結(jié)同一個(gè)進(jìn)程中的其他線程。 前言 不積跬步,無以至千里;不積小流,無以成江海。在學(xué)習(xí)Java多線程相關(guān)的知識(shí)前,我們首先需要去了解一點(diǎn)操作系統(tǒng)的進(jìn)程、線程以及相關(guān)的基礎(chǔ)概念。 進(jìn)程 通常,我們把一個(gè)程序的執(zhí)行稱為一...
摘要:系統(tǒng)創(chuàng)建好進(jìn)程后,實(shí)際上就啟動(dòng)執(zhí)行了該進(jìn)程的主執(zhí)行線程。也就是說,對(duì)線程來說,進(jìn)程相當(dāng)于一個(gè)容器,可以有許多線程同時(shí)在一個(gè)進(jìn)程里執(zhí)行。默認(rèn)情況下,同一應(yīng)用程序下的所有組件都運(yùn)行在相同的進(jìn)程和線程一般稱為程序的主線程中。 一 前言 異步編程是android初學(xué)者的一個(gè)難點(diǎn),卻也是始終不能繞過的一個(gè)坎??梢哉f幾乎每個(gè)app都逃不了網(wǎng)絡(luò)編程,而網(wǎng)絡(luò)編程又往往建立在異步的機(jī)制之上(你不應(yīng)該也無...
閱讀 3404·2023-04-25 17:19
閱讀 702·2021-11-23 09:51
閱讀 1411·2021-11-08 13:19
閱讀 858·2021-09-29 09:34
閱讀 1756·2021-09-28 09:36
閱讀 1554·2021-09-22 14:59
閱讀 2780·2019-08-29 16:38
閱讀 2111·2019-08-26 13:40