Ежемесячный таймер JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Ежемесячный таймер Java

Сообщение Anonymous »

Я пытаюсь создать Timer/TimerTask, который будет запускаться в один и тот же день каждого месяца. Я не могу запланировать повторяющийся таймер, потому что месяц не всегда будет одинаковым.

Итак, вот мое решение:

Код: Выделить всё

public class MyTask extends TimerTask {
public void run(){
//do process file stuff

if(scheduledExecutionTime() != 0){
TimerHelper.restartMyTimer();
}
}
}

public class TimerHelper {
public static HashTable timersTable = new HashTable();

public static void restartMyTimer(){
Calendar runDate = Calendar.getInstance();
runDate.set(Calendar.DAY_OF_MONTH, 1);
runDate.set(Calendar.HOUR_OF_DAY, 4);
runDate.set(Calendar.MINUTE, 0);
runDate.add(Calendar.MONTH, 1);//set to next month

MyTask myTask = new MyTask();
Timer myTimer = new Timer();

myTimer.schedule(myTask, runDate.getTime());

timersTable = new HashTable();//keeping a reference to the timer so we
timersTable.put("1", myTimer);//have the option to cancel it later
}
}
Проблема, с которой, как мне кажется, я столкнусь, заключается в том, что, поскольку первый TimerTask создает второй таймер, будет ли первый таймер сохраняться, потому что он создал второй? После того как код завершится по первому таймеру, будет ли об этом потоке и объекте заботиться сборщик мусора? Со временем я не хочу создавать кучу потоков, которые ничего не делают, но не удаляются. Возможно, я не совсем понимаю, как работают потоки и таймеры...

Я открыт для предложений других способов создания ежемесячного таймера, если мне не нужно использовать сторонние JAR-файлы.

Спасибо!>

Подробнее здесь: https://stackoverflow.com/questions/410 ... thly-timer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»