方法很多。原来基本上是通过JNI,调用GetCurrentProceessId()。当然有一些库,比如Apache API,等等。其实也是调用JNI,不过是给封装好了。
前天在网上查到一个方法,测试了一下,比较方便,不需要JNI和第三方库:
public long get() {
String processName =
java.lang.management.ManagementFactory.getRuntimeMXBean().getName();
return Long.parseLong(processName.split("@")[0]);
}
调用的是Java的Management Bean,获得当前的RuntimeMXBean的Name,从中解析出PID。查了下这个貌似JDK不保证这个一定包含PID。但是测试了一下,在Windows上,JDK5/6/7/8都是可用的。Linux上测试了JDK6/7,也是可用的。所以可以作为一个比较简便的获取PID的方案。