Ich versuche jeden Tag um 5 Uhr morgens eine bestimmte Aufgabe auszuführen. Also habe ich mich dafür entschieden, ScheduledExecutorService
aber bisher habe ich Beispiele gesehen, die zeigen, wie man alle paar Minuten eine Aufgabe ausführt.
Und ich kann kein Beispiel finden, das zeigt, wie man eine Aufgabe jeden Tag zu einer bestimmten Zeit (5 Uhr morgens) ausführt und auch die Sommerzeit berücksichtigt -
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, eine Aufgabe so zu planen, dass sie jeden Tag um 5 Uhr morgens ausgeführt wird, wobei auch ScheduledExecutorService
die Sommerzeit berücksichtigt wird?
Und TimerTask
ist auch besser dafür oder ScheduledExecutorService
?