Tôi đang cố gắng thực hiện một công việc nhất định hàng ngày vào lúc 5 giờ sáng. Vì vậy, tôi quyết định sử dụng ScheduledExecutorService
cho điều này nhưng cho đến nay tôi đã thấy các ví dụ cho thấy cách chạy tác vụ sau mỗi vài phút.
Và tôi không thể tìm thấy bất kỳ ví dụ nào cho thấy cách thực hiện một công việc hàng ngày vào một thời điểm cụ thể (5 giờ sáng) vào buổi sáng và cũng xem xét thực tế về thời gian tiết kiệm ánh sáng ban ngày -
Dưới đây là mã của tôi sẽ chạy sau mỗi 15 phút -
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();
}
}
Có cách nào để tôi có thể lên lịch tác vụ chạy hàng ngày 5 giờ sáng vào buổi sáng bằng cách sử dụng ScheduledExecutorService
cả thời gian tiết kiệm ánh sáng ban ngày không?
Và cũng TimerTask
tốt hơn cho điều này hoặc ScheduledExecutorService
?