Я намагаюся виконувати певне завдання щодня о 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
?