Я хочу запустить задачу в определенное время, скажем, в 7.11pm каждый день. Я пробовал следующий фрагмент кода, но он не работает.Как рассчитать initialDelay для ScheduledExecutorService # 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 метода или что-то еще?