Estoy tratando de ejecutar una determinada tarea todos los días a las 5 de la mañana. Así que decidí usarlo ScheduledExecutorService
para esto, pero hasta ahora he visto ejemplos que muestran cómo ejecutar la tarea cada pocos minutos.
Y no puedo encontrar ningún ejemplo que muestre cómo ejecutar una tarea todos los días a una hora en particular (5 a.m.) de la mañana y también considerando el hecho del horario de verano:
A continuación se muestra mi código que se ejecutará cada 15 minutos:
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();
}
}
¿Hay alguna manera de que pueda programar una tarea para que se ejecute todos los días a las 5 a.m. de la mañana usando ScheduledExecutorService
teniendo en cuenta el hecho del horario de verano también?
¿Y también TimerTask
es mejor para esto o ScheduledExecutorService
?