前几天发表了《Java 定时启动服务》文章,现在发表这篇文档《Java 获取系统的进程列表》,看似联系不大,实质在某些需求上还是有所关系。比如现在有这个需求:定时器启动服务时,要求启动一个“exe进程”来完成一些操作(下载图片),这时需要出入一个参数。但事实上我们已经获取到要出入的参数列表,当我们不能直接去循环遍历参数列表,因为这样的话,如果参数列表项比较多,那么每次循环都要启动一个“exe进程”,可能直接导致系统内存不足而死机。如果每次启动服务时,我们判断系统进程中是否存在该“exe进程”,或者判断该“exe进程”数不大于某个范围值,再启动服务就可以很好的避免这个问题了。下面直接上代码:
ProcessListTest.java
package com.minimax.listeren;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
*
* @包名 :com.minimax.listeren
* @文件名 :ProcessListTest.java
* @类描述 :判断系统进程是否存在
* @作者 :Andy.wang
* @创建时间 :2014-3-5上午11:25:26
* @更改人 :
* @更改时间 :
*/
public class ProcessListTest {
public static void main(String[] args) throws IOException {
System.out.println(ProcessListTest.isRunning("QQ.exe"));
}
/**
*
* @方法名 :isRunning
* @方法描述 :判断系统进程是否存在
* @创建者 :Andy.wang
* @创建时间 :2014-3-5上午11:25:46
* @param exeName :进程名
* @return
* 返回类型 :boolean
*/
public static boolean isRunning(String exeName) {
Process proc;
try {
proc = Runtime.getRuntime().exec("tasklist");
BufferedReader br = new BufferedReader(new InputStreamReader(proc
.getIn