zoukankan      html  css  js  c++  java
  • 可执行文件启动器(上)

    可执行文件启动器可以以一定的时间间隔反复执行外部某个可执行文件。
    如果我们其用源代码生成的jar文件为:Launcher.jar。
    则可以用如下的DOS命令运行它:
    java -jar libLauncher.jar getProcessState.bat 5000
    5000表示每隔5000毫秒执行一次getProcessState.bat 文件。
    源码包含2个文件Worker.java和Launcher.java

    Worker.java文件:

    package com.teleca.robin;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
     
    import javax.swing.JLabel;
    import javax.swing.JTextField;
     
    public class Worker extends Thread {
        private boolean loop=true;
        private boolean paused=false;
        private int cnt=0;
        final private JLabel consoleText;
        Worker(JLabel lable)
        {
         consoleText=lable;
        }
        private long interval=1000;
        void setInterval(long interval)
        {
         this.interval=interval;
        }
        private String executableFileName;
        void setExecutableFileName(String file)
        {
         if(executableFileName!=null&&file!=null)
         {
         if(!executableFileName.equals(file))
         cnt=0;
         }
         executableFileName=file;
        }
       public void doPause()
        {
         paused=true;
        }
        public void doResume()
        {
         paused=false;
         interrupt();
        }
        public void die()
        {
         loop=false;
        }
        public void run()
        {
         while(loop)
         {
         if(paused||executableFileName==null)
         {
         try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    //e.printStackTrace();
    }
         }
         else
         {
          BufferedReader stdout = null;
          try {
        Process p = null;
        String line = null;
        p = Runtime.getRuntime().exec(executableFileName, null, null);
        stdout = new BufferedReader(new InputStreamReader(p
          .getInputStream()));
        while ((line = stdout.readLine()) != null) {
         System.out.println(line);
        }
        stdout.close();
        stdout=null;
       } catch (IOException e) {
        e.printStackTrace();
       }finally{
       if(stdout!=null)
    try {
    stdout.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
       }
         cnt++;
         if(consoleText!=null)
         consoleText.setText("Execute the file "+cnt+" times");
         try {
    Thread.sleep(interval);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    //e.printStackTrace();
    }
         }
         }
         System.out.println("exit!");
        }
    }

     

  • 相关阅读:
    centos7 源码安装python3
    gitlab 迁移
    gitlab 搭建
    亚伦史沃茨 公开信
    误删了sudo包怎么办
    在中国历史上,我个人最喜欢的三个皇帝
    安装PHP7
    Mac OS上设置Django开发环境
    The Pragmatic Programmer Quick Reference Guide
    Nginx的第一个模块-HelloWorld
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4580670.html
Copyright © 2011-2022 走看看