Как запускать определенную задачу каждый день в определенное время, используя ScheduledExecutorService?
Я пытаюсь выполнить определенное задание каждый день в 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