第一种方法:使用ManagementFactory.getRuntimeMXBean,Java 虚拟机的运行时系统的管理接口
- RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();
String name = runtime.getName(); // format: "pid@hostname"
try {
System.out.println(Integer.parseInt(name.substring(0,name.indexOf('@'))));
} catch (Exception e) {}
第二种方法:解析JPS命令
- private static String getPid() throws IOException {
- Process p = Runtime.getRuntime().exec("/home/kent/opt/jdk1.6.0_41/bin/jps");
- InputStream in = p.getInputStream();
- List<String> jpsLines = IOUtils.readLines(in);
- IOUtils.closeQuietly(in);
- for (String line : jpsLines) {
- if (line.contains(HelloPoolSize.class.getSimpleName())) {
- return line.split("\\s")[0];
- }
- }
- throw new IllegalStateException("拿不到pid");
- }