• java监控文件运行状态


    package com.rmi.clent;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.nio.channels.FileChannel;
    import java.nio.channels.FileLock;
    import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;
    import java.util.concurrent.TimeUnit;
    import java.util.concurrent.TimeoutException;
    public class RunCmd implements Callable {

    String fileLockPath ="";
    public RunCmd(String fileLockPath ) {
    this.fileLockPath =fileLockPath;
    }

    @Override
    public Object call() throws Exception {

    return isRunning(fileLockPath);
    }

    /**
    * 通过文件锁来判断程序是否正在运行
    * @return 如果正在运行返回true,否则返回false
    * @throws Exception
    */
    private boolean isRunning(String fileLockPath) throws Exception
    {
    boolean rv=false;
    try {
    RandomAccessFile fis = new RandomAccessFile(fileLockPath,"rw");
    FileChannel lockfc = fis.getChannel();
    boolean flag = true;
    FileLock flock = null;
    try{
    if(lockfc !=null){
    flock = lockfc.lock();
    flag = true;
    }else{
    flag =false;
    }

    } catch (Exception e) {
    flag = false;
    //e.printStackTrace();
    // throw new Exception("程序正在运行") ;
    }
    if(flag) {
    System.out.println("程序没有运行mmmmmmmmm.");
    rv=true;
    }else {
    System.out.println("程序正在运行xxxxx.");
    }
    // 关闭流
    Thread.sleep(10000);
    if(flock !=null){
    flock.release();
    }
    fis.close();
    } catch (FileNotFoundException e1) {
    e1.printStackTrace();
    }
    catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return rv;
    }



    public void ExcuteThread(String strFilePath) {
    // strFilePath="D:\test\text.txt";//空文件
    System.out.println("strFilePath:"+strFilePath);
    ExecutorService pool = Executors.newFixedThreadPool(2);
    RunCmd wf =new RunCmd(strFilePath);

    // RunCmd wf1 =new RunCmd(strFilePath);
    Future f1 = pool.submit(wf);
    // Future f2 = pool.submit(wf1);
    System.out.println();
    TimeUnit unit = TimeUnit.SECONDS;
    // f1.get(3000, unit);
    String returnStr = "";
    try {
    returnStr = f1.get(3000, unit).toString();
    System.out.println("f1:"+returnStr);
    // returnStr = f2.get(3000, unit).toString();
    // System.out.println("f2:"+returnStr);
    } catch (InterruptedException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    } catch (ExecutionException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    } catch (TimeoutException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    System.out.println(">>>"+returnStr);
    //关闭线程池
    pool.shutdown();
    // 等待子线程结束,再继续执行下面的代码
    try {
    pool.awaitTermination(30000, TimeUnit.SECONDS);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    public static void main(String[] args) {
    RunCmd tk = new RunCmd("D:\test\text.txt");
    tk.ExcuteThread("D:\test\text.txt");
    }

    }

  • 相关阅读:
    javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
    Maven无法下载com.oracle:ojdbc14:jar解决方法
    打赏
    badge徽章、挂件模版
    adb修改手机分辨率
    git忽略上传文件git忽略上传文件
    python爬虫用drony转发进行抓包转发
    pycharm远程服务器进行调试
    Ubuntu上latex+atom配置
    Ubuntu下设置开机后自动运行命令
  • 原文地址:https://www.cnblogs.com/leiyf/p/5604679.html
Copyright © 2020-2023  润新知