Я пытаюсь запустить метод один раз в неделю. Например, каждый понедельник 8 вечера. Я использую этот код:
Timer timer = new Timer();
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
calendar.set(Calendar.HOUR_OF_DAY, 20);
calendar.set(Calendar.MINUTE, 00);
calendar.set(Calendar.SECOND, 00);
Date time = calendar.getTime();
timer.schedule(new PrintTask(),
time);
// other code where variable gets increased
public class PrintTask extends TimerTask {
public void run() {
variable = 0;
}
}
Однако, если я прав, код dosomething
выполняется непрерывно - пока календарное время уже прошло. Например, сейчас уже понедельник, поэтому код dosomething
выполняется постоянно. Variabele увеличивается, но он должен быть сброшен до 0 в понедельник. Переменная теперь постоянно равна 0, потому что она сбрасывается снова и снова. Если я использую calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
, переменная не сбрасывается, потому что это еще не было воскресенье. Но как только наступит воскресенье в 8 вечера, он, вероятно, продолжит сбрасывать остаток этого дня.
Я хочу, чтобы код dosomething
выполнялся только один раз в указанное время. Может кто-нибудь сказать мне, как настроить код для достижения этой цели?
Извините за мой Engli sh