毎週金曜日に特定のタスクをいつでも実行しようとしています。そこで、これを使用することにしScheduledExecutorService
ましたが、これまでのところ、タスクを数分ごとに実行する方法を示す例を見てきました。
以下は、毎日午前 5 時に実行するように採用した私のコードです。これを使用して、毎週金曜日にいつでもタスクを実行するにはどうすればよいですか?
public static void main(String[] args) {
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(5);
Date aDate = new Date();
Calendar with = Calendar.getInstance();
with.setTime(aDate);
int hour = with.get(Calendar.HOUR_OF_DAY);
int intDelayInHour = hour < 5 ? 5 - hour : 24 - (hour - 5);
System.out.println("Current Hour: " + hour);
System.out.println("Comuted Delay for next 5 AM: " + intDelayInHour);
scheduler.scheduleAtFixedRate(new Runnable() {
public void run() {
try {
getDataFromDatabase();
} catch (Exception ex) {
ex.printStackTrace(); // or loggger would be better
}
}
}, intDelayInHour, 24, TimeUnit.HOURS);
}
protected static void getDataFromDatabase() {
// TODO Auto-generated method stub
}
誰かがこれをどのように行うかの例を提供できますか?