在java线程中每隔一小时运行一个作业

时间:2015-10-28 05:56:04

标签: java multithreading scheduled-tasks

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

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

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

3 个答案:

答案 0 :(得分:2)

您可以使用ScheduledExecutorService执行此任务,此处为Sample Example

答案 1 :(得分:0)

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

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

否则,您可以选择 ScheduledExecutorService

ScheduledExecutorService executor = ...

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

答案 2 :(得分:0)

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方法中编写代码