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

Ответы на вопрос(10)

Ваш ответ на вопрос