最佳答案
我试着每天早上5点做一项特定的任务。所以我决定使用 ScheduledExecutorService
来完成这个任务,但是到目前为止,我已经看到了一些示例,它们显示了如何每隔几分钟运行一次任务。
我找不到任何例子来说明如何在每天的特定时间(早上5点)运行一项任务,同时也考虑到夏时制的事实
下面是我的代码,将运行每15分钟-
public class ScheduledTaskExample {
private final ScheduledExecutorService scheduler = Executors
.newScheduledThreadPool(1);
public void startScheduleTask() {
/**
* not using the taskHandle returned here, but it can be used to cancel
* the task, or check if it's done (for recurring tasks, that's not
* going to be very useful)
*/
final ScheduledFuture<?> taskHandle = scheduler.scheduleAtFixedRate(
new Runnable() {
public void run() {
try {
getDataFromDatabase();
}catch(Exception ex) {
ex.printStackTrace(); //or loggger would be better
}
}
}, 0, 15, TimeUnit.MINUTES);
}
private void getDataFromDatabase() {
System.out.println("getting data...");
}
public static void main(String[] args) {
ScheduledTaskExample ste = new ScheduledTaskExample();
ste.startScheduleTask();
}
}
有没有办法,我可以安排一个任务,运行在每天早上5点使用 ScheduledExecutorService
考虑到事实上,以及夏时制?
而且 TimerTask
是更好的这个或 ScheduledExecutorService
?