я хочу запускать свой код каждую среду каждую неделю в полночь.
public class Autonom extends TimerTask {
public static void main(String[] args) {
Timer timer = new Timer();
Calendar data = Calendar.getInstance();
data.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
data.set(Calendar.HOUR_OF_DAY, 0);
data.set(Calendar.MINUTE, 0);
data.set(Calendar.SECOND, 0);
data.set(Calendar.MILLISECOND, 0);
timer.schedule(new Autonom(), data.getTime(), TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS));
}
@Override
public void run() {
...
}
}
Проблема в том, что при запуске этого кода метод run выполняется каждый раз. Так в чем проблема?
Вы используете текущее время и установите его на полночь в среду. Поскольку сегодня пятница, среда в прошлом.
Из документа вы можете увидеть, что произойдет в этом случае
Если вы хотите дождаться следующей среды, чтобы начать выполнение, увеличьте неделю.
Это будет дата в futur и будет ждать до тех пор, чтобы начать первое исполнение.