Wie kann ich mit ScheduledExecutorService eine bestimmte Aufgabe jeden Tag zu einer bestimmten Zeit ausführen?

Ich versuche jeden Tag um 5 Uhr morgens eine bestimmte Aufgabe auszuführen. Also habe ich beschlossen, zu verwendenScheduledExecutorService Dafür habe ich aber bisher Beispiele gesehen, die zeigen, wie man alle paar Minuten einen Task ausführt.

Und ich bin nicht in der Lage, ein Beispiel zu finden, das zeigt, wie eine Aufgabe jeden Tag zu einer bestimmten Zeit (5 Uhr morgens) ausgeführt wird, und auch unter Berücksichtigung der Sommerzeit.

Unten ist mein Code, der alle 15 Minuten ausgeführt wird -

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();
    }
}

Gibt es eine Möglichkeit, ich kann eine Aufgabe so planen, dass sie jeden Tag um 5 Uhr morgens mit ausgeführt wirdScheduledExecutorService Berücksichtigen Sie auch die Sommerzeit?

Und auchTimerTask ist besser dafür oderScheduledExecutorService?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage