国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

Java獲取當(dāng)前進(jìn)程ID以及所有Java進(jìn)程的進(jìn)程ID

roland_reed / 682人閱讀

摘要:獲取當(dāng)前進(jìn)程以及所有進(jìn)程的進(jìn)程首先是獲取當(dāng)前運(yùn)行的進(jìn)程,這個(gè)是網(wǎng)上常見(jiàn)的,也就是程序自身將進(jìn)程打印出來(lái)是一個(gè)在運(yùn)行時(shí)管理和監(jiān)控的工廠(chǎng)類(lèi),它能提供很多管理的靜態(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)上常見(jiàn)的,也就是Java程序自身將進(jìn)程ID打印出來(lái):
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的工廠(chǎng)類(lèi),它能提供很多管理VM的靜態(tài)接口,比如RuntimeMXBean;
RuntimeMXBean是Java虛擬機(jī)的運(yùn)行時(shí)管理接口.

獲取所有正在運(yùn)行著的Java進(jìn)程
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(local.activeVms());
         // 遍歷集合,輸出PID和進(jìn)程名
         for(Object process : vmlist) {
             MonitoredVm vm = local.getMonitoredVm(new VmIdentifier("http://" + process));
             // 獲取類(lèi)名
             String processname = MonitoredVmUtil.mainClass(vm, true);
             System.out.println(process + " ------> " + processname);
         }
     }
}
MonitoredHost等類(lèi)位于${JAVA_HOME}/lib/tools.jar

_
運(yùn)行結(jié)果:

2752 ------> 
5172 ------> com.test.Target
5308 ------> com.test.ProcessID

直接根據(jù)類(lèi)找到對(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(local.activeVms());
        // 遍歷集合,輸出PID和進(jìn)程名
        for(Object process : vmlist) {
            MonitoredVm vm = local.getMonitoredVm(new VmIdentifier("http://" + process));
            // 獲取類(lèi)名
            String processname = MonitoredVmUtil.mainClass(vm, true);
            if(cls.getName().equals(processname)) {
                return ((Integer)process).intValue();
            }
        }
        return -1;
    }
}

根據(jù)類(lèi)名稱(chēng)找到對(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(local.activeVms());
        // 遍歷集合,輸出PID和進(jìn)程名
        for (Object process : vmlist) {
            MonitoredVm vm = local.getMonitoredVm(new VmIdentifier("http://" + process));
            // 獲取類(lèi)名
            String processname = MonitoredVmUtil.mainClass(vm, true);
            if (cls.equals(processname)) {
                return ((Integer) process).intValue();
            }
        }
        return -1;
    }
}           
               
                                           
                       
                 
            
                     
             
               

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/8106.html

相關(guān)文章

  • Java獲取當(dāng)前進(jìn)程ID以及所有Java進(jìn)程進(jìn)程ID

    摘要:獲取當(dāng)前進(jìn)程以及所有進(jìn)程的進(jìn)程首先是獲取當(dāng)前運(yùn)行的進(jìn)程,這個(gè)是網(wǎng)上常見(jiàn)的,也就是程序自身將進(jìn)程打印出來(lái)是一個(gè)在運(yùn)行時(shí)管理和監(jiān)控的工廠(chǎng)類(lèi),它能提供很多管理的靜態(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)上常見(jiàn)的,也就是Java程序自身將...

    stormzhang 評(píng)論0 收藏0
  • Java多線(xiàn)程筆記(零):進(jìn)程、線(xiàn)程與通用概念

    摘要:父進(jìn)程調(diào)用創(chuàng)建子進(jìn)程。因而,一個(gè)進(jìn)程的第一個(gè)線(xiàn)程會(huì)隨著這個(gè)進(jìn)程的啟動(dòng)而創(chuàng)建,這個(gè)線(xiàn)程被稱(chēng)為該進(jìn)程的主線(xiàn)程。另一方面,線(xiàn)程不可能獨(dú)立于進(jìn)程存在。終止線(xiàn)程線(xiàn)程可以通過(guò)多種方式來(lái)終結(jié)同一個(gè)進(jìn)程中的其他線(xiàn)程。 前言 不積跬步,無(wú)以至千里;不積小流,無(wú)以成江海。在學(xué)習(xí)Java多線(xiàn)程相關(guān)的知識(shí)前,我們首先需要去了解一點(diǎn)操作系統(tǒng)的進(jìn)程、線(xiàn)程以及相關(guān)的基礎(chǔ)概念。 進(jìn)程 通常,我們把一個(gè)程序的執(zhí)行稱(chēng)為一...

    blastz 評(píng)論0 收藏0
  • 進(jìn)程,線(xiàn)程講到AsyncTask

    摘要:系統(tǒng)創(chuàng)建好進(jìn)程后,實(shí)際上就啟動(dòng)執(zhí)行了該進(jìn)程的主執(zhí)行線(xiàn)程。也就是說(shuō),對(duì)線(xiàn)程來(lái)說(shuō),進(jìn)程相當(dāng)于一個(gè)容器,可以有許多線(xiàn)程同時(shí)在一個(gè)進(jìn)程里執(zhí)行。默認(rèn)情況下,同一應(yīng)用程序下的所有組件都運(yùn)行在相同的進(jìn)程和線(xiàn)程一般稱(chēng)為程序的主線(xiàn)程中。 一 前言 異步編程是android初學(xué)者的一個(gè)難點(diǎn),卻也是始終不能繞過(guò)的一個(gè)坎。可以說(shuō)幾乎每個(gè)app都逃不了網(wǎng)絡(luò)編程,而網(wǎng)絡(luò)編程又往往建立在異步的機(jī)制之上(你不應(yīng)該也無(wú)...

    姘存按 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<