进程监控程序-java

来源:互联网 发布:无法优化游戏的问题 编辑:程序博客网 时间:2024/05/20 22:36
进程监控程序保证已运行程序不间断的运行,要保证不间断运行需要两个部分:
1.java程序中使用while语句(也可以使用进程),每隔端时间检查一次;
2.使用bat文件,如果程序未运行,让java程序运行bat文件,启动程序,再次运行;bat文件放在项目根目录即可。
java程序如下:
import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStreamReader;import java.io.RandomAccessFile;import java.nio.channels.FileChannel;import java.nio.channels.FileLock;public class ThreadKeepTools {    public static void ExcuteThread() throws InterruptedException{        String strFilePath="cloudmusic.exe";//(网易云音乐)        String strBatPath="test.bat";        while(true){            System.out.println("strFilePath:"+strFilePath);        boolean RunOrNOT=isRunning2(strFilePath);        System.out.println("RunOrNot:"+RunOrNOT);        if(!RunOrNOT){            try {                System.out.println("开始执行程序!");                Runtime.getRuntime().exec("cmd /k start "+strBatPath);                System.out.println("strbatpath:"+strBatPath);            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }         }else {            Thread.sleep(6000);        }        Thread.sleep(10000);        }    }    public static void main(String[] args) {        try {            ExcuteThread();        } catch (InterruptedException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    public static boolean isRunning2(String processName)//processName-进程名    {        BufferedReader bufferedReader = null;        try        {            Process proc = Runtime.getRuntime().exec("tasklist /FI \"IMAGENAME eq "                    + processName                    + "\"");            bufferedReader = new BufferedReader(new InputStreamReader(proc.getInputStream()));            String line = null;            while ((line = bufferedReader.readLine()) != null)            {                if (line.contains(processName)) //判断是否存在                {                    return true;                }            }            return false;        }        catch (Exception ex)        {            ex.printStackTrace();            return false;        }        finally        {            if (bufferedReader != null)            {                try                {                    bufferedReader.close();                }                catch (Exception ex)                {                }            }        }     }}
bat文件如下:
@echo off    echo 准备再次启动程序(网易云音乐)。。。  start F:\CloudMusic\cloudmusic.exeexit



1 0