मैं रोज सुबह 5 बजे एक निश्चित कार्य चलाने की कोशिश कर रहा हूं। इसलिए मैंने इसके लिए उपयोग करने का फैसला किया, ScheduledExecutorService
लेकिन अब तक मैंने ऐसे उदाहरण देखे हैं जिनसे पता चलता है कि हर कुछ मिनट में कार्य कैसे चलाना है।
और मुझे कोई उदाहरण नहीं मिल रहा है, जो यह दर्शाता है कि किसी कार्य को हर दिन किसी विशेष समय (सुबह 5 बजे) कैसे चलाया जाता है और साथ ही दिन के समय की बचत के तथ्य पर भी विचार किया जाता है -
नीचे मेरा कोड है जो हर 15 मिनट में चलेगा -
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();
}
}
क्या कोई रास्ता है, मैं दिन ScheduledExecutorService
के उजाले के समय के साथ-साथ समय की बचत को ध्यान में रखते हुए हर दिन सुबह 5 बजे चलाने का कार्य निर्धारित कर सकता हूं ?
और इसके लिए भी TimerTask
बेहतर है या ScheduledExecutorService
?