当前位置: 代码迷 >> J2SE >> Process对象怎么判断该进程已经结束
  详细解决方案

Process对象怎么判断该进程已经结束

热度:92   发布时间:2016-04-24 00:24:50.0
Process对象如何判断该进程已经结束?
创建了一个Process,在程序里想用一个Timer定时去监视一下该进程是否已经运行结束,该如何去判断?不能用Process.waitFor因为waitfor会引起阻塞,中间需要做别的事情。

------解决方案--------------------
Java code
Runtime runtime = Runtime.getRuntime();        Process process = null;        try {            process = runtime.exec("cmd /c Tasklist");            BufferedReader in = new BufferedReader(new InputStreamReader(                    process.getInputStream()));            String s = "";            while ((s = in.readLine()) != null) {                //看看有没有想要的进程            }        }
------解决方案--------------------
如果process启动的程序也是你自己写的,那么就设置一个flag,程序即行结束时修改flag,timer就一直监视flag的值,如果程序不是你写的,那就像LZ说的,读取系统的任务list看看存在不存在你的进程(linux的话可以用ps -ef | grep来判断)
------解决方案--------------------
掉一个线程去监听 进程 的运行。
Java code
    public class ProcessState extends Thread {        public ProcessState(Process p) {            process = p;        }        @Override        public void run() {            try {                process.waitFor();            } catch (InterruptedException ex) {                throw new RuntimeException();            }        }        public void startListen() {            start();        }        public boolean isExit() {            switch (getState()) {                case NEW:                    throw new RuntimeException();                case TERMINATED:                    return true;                default:                    return false;            }        }        private Process process;    }
  相关解决方案