Saya mencoba menjalankan tugas tertentu setiap hari pada jam 5 pagi. Jadi saya memutuskan untuk menggunakan ScheduledExecutorService
ini tetapi sejauh ini saya telah melihat contoh yang menunjukkan bagaimana menjalankan tugas setiap beberapa menit.
Dan saya tidak dapat menemukan contoh apa pun yang menunjukkan bagaimana menjalankan tugas setiap hari pada waktu tertentu (5 pagi) di pagi hari dan juga mempertimbangkan fakta waktu musim panas juga -
Di bawah ini adalah kode saya yang akan berjalan setiap 15 menit -
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();
}
}
Adakah cara, saya dapat menjadwalkan tugas untuk dijalankan setiap hari jam 5 pagi dengan ScheduledExecutorService
mempertimbangkan fakta waktu musim panas juga?
Dan juga TimerTask
lebih baik untuk ini atau ScheduledExecutorService
?