【问题标题】: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
【解决方案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 方法中编写什么代码