我想在特定的時間運行一項任務,例如每天晚上7點11分。 我試過下面這段代碼,但它不工作。如何計算ScheduledExecutorService的initialDelay#scheduleAtFixedRate
import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class Task3 {
public static void main(String[] args) {
Runnable runnable = new Runnable() {
public void run() {
System.out.println(new Date());
System.out.println("Hello !!");
}
};
Calendar calendar = Calendar.getInstance();
long now = calendar.getTimeInMillis();
calendar.set(Calendar.HOUR, 18);
calendar.set(Calendar.MINUTE, 11);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
service.scheduleAtFixedRate(runnable, calendar.getTimeInMillis(), 5, TimeUnit.SECONDS);
}
}
在上面的代碼中,我試圖運行從下午7點11分開始每天用5秒的間隔調度任務。但這並不像我預期的那樣。而且,如果我想在另一個條件下執行相同的任務,那麼應該只在特定日期執行任務,比如說每個星期二和星期三。
我在計算方法或其他東西的initialDelay參數時會出現某種錯誤嗎?