• 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");
    }

    }

  • 相关阅读:
    使用Logstash把MySQL数据导入到Elasticsearch中
    通过Metricbeat实现外部对Elastic Stack的监控
    使用Elasticsearch的processors来对csv格式数据进行解析
    redis学习网址
    部署文件:filebeat->kafka集群(zk集群)->logstash->es集群->kibana
    ios实例开发精品文章推荐(8.13)
    ios实例开发精品文章推荐(8.12)11个处理触摸事件和多点触摸的JS库
    Android开发环境——模拟器AVD相关内容汇总
    Android开发环境——Eclipse ADT相关内容汇总
    Android开发环境——SDK相关内容汇总
  • 原文地址:https://www.cnblogs.com/leiyf/p/5604679.html
Copyright © 2020-2023  润新知