【问题标题】:Run a job for every one hour in java thread在 java 线程中每隔一小时运行一次作业
【发布时间】:2016-01-27 19:15:30
【问题描述】:

我必须每 1 小时使用一个线程运行一次作业。这项工作是读取文件夹中的文件。我创建了一个简单的线程

Thread t = new Thread() {
    @Override
    public void run() {
        while(true) {
            try {
                Thread.sleep(1000*60*60);
                //Implementation
            } catch (InterruptedException ie) {
            }
        }
    }
};
t.start();

每隔一小时运行一次,以便我可以调用该函数来读取文件。我想知道这种方法好还是其他方法好

【问题讨论】:

标签: java multithreading scheduled-tasks


【解决方案1】:

你可以使用ScheduledExecutorService来完成这个任务,这里是Sample Example

【讨论】:

    【解决方案2】:

    如果您只想使用Thread,请尝试

    try {
            Thread.sleep(1000 * 60 * 60);
        } catch (InterruptedException ex) {}
    

    否则你可以选择ScheduledExecutorService

    ScheduledExecutorService executor = ...
    
    executor.scheduleAtFixedRate(someTask, 0, 1, TimeUnit.HOUR); 
    

    【讨论】:

      【解决方案3】:
      import java.util.Timer;
      import java.util.TimerTask;
      
      public class MyTimer {
          public static void main(String[] args) {
              OneHourJob hourJob = new OneHourJob();
              Timer timer = new Timer();
              timer.scheduleAtFixedRate(hourJob, 0, 5000 * 60 * 60); // this code
              // runs every 5 seconds to make it one hour use this value 5000 * 60 *
              // 60
          }
      }
      
      class OneHourJob extends TimerTask {
      
          @Override
          public void run() {
              System.out.println("Ran after one hour.");
      
          }
      
      }
      

      以上代码每五秒运行一次。无论您需要在 OneHourJob 的 run 方法中编写什么代码

      【讨论】:

        猜你喜欢
        • 2018-10-17
        • 1970-01-01
        • 1970-01-01
        • 2017-05-08
        • 2016-09-29
        • 2018-02-18
        • 1970-01-01
        • 2017-05-26
        • 2019-07-31
        相关资源
        最近更新 更多