有过Linux下编程经验的朋友一定对如何获取当前进程的进程ID的方法很熟悉,Linux下的C库提供提供了函数getpid,通过这个函数可以轻松获取当前进程的进程ID。但是对于使用Java语言作为工作语言的朋友,如何获取当前进程ID可能就比较困难了。从官方标准JDK文档中似乎找不到类似getpid一样的方法,而且市面上能找到的教材中也很少提及类似获取进程ID之类的、与平台相关的函数方法。
最近在公司走读一个工具的代码时,偶然发现了类似如下的代码,借助JMX特性来获取当前Java进程的进程ID,代码样例如下:
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
public class GetPid {
/**
* @param args
*/
public static void main(final String[] args) {
final RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();
final String info = runtime.getName();
final int index = info.indexOf("@");
if (index != -1) {
final int pid = Integer.parseInt(info.substring(0, index));
System.out.println(info);
System.out.println(pid);
}
}
}
通过样例代码中的几个方法调用,就可以提取出当前进程的进程 ID ,是不是很简单呢?