Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Как получить прерывание от таймера?


Автор: Alone 8.11.2004, 18:33
Доброго дня всем.

Вот такая задачка... Допустим я хочу каждую минуту проверять наступление некоего запланированного события (например запись из органайзера - встреча в 10:20)
Можно это решить запусканием нитки таймера, с периодом в 1 минуту, и по окончанию работы - выполнять проверку, и заново стартовать нитку таймера...
Вроде бы задчка тривиальная, но стартует таймер то в случайное время (например 21:45:12)
и следующая проверка произойдет в 21:46:12 Плюс время, затрачиваемое на процедуру проверки...
А я хочу по наступлении новой минуты(21:45:00) получать прерывание(событие)
В связи с этим - Хельп smile

Автор: Caramel 8.11.2004, 18:37
Очень просто:
Код

import javax.swing.Timer;
....
Timer timer = new Timer(<timeout_milliseconds> , myActionListener);
....
class MyActionListener implements ActionListener
{
// вот тут и обрабатываем прирывание от таймера
}

Автор: Domestic Cat 8.11.2004, 18:39
Проверяй каждую секунду smile Тут уже выбирай сам - либо большая точность, но тогда тратятся ресурсы, либо точность поменьше (например, 30 секунд). По-моему, 10-15 секунд будет ок.

Автор: LSD 9.11.2004, 20:03
Код

import java.util.Timer;
...
Timer timer = new Timer();
timer.scheduleAtFixedRate(myTimerTask , <дата_первого_запуска> , <период>);

class MyTimerTask extends TimerTask
{
 public void run()
 {
   ...
 }
}

Таймер сработает в назначенное время, и будет стараться выдерживать максимально точно выдерживать вермя начала события, т.е. в твоем случае так чтобы вермя срабатывания таймера было максимально близко к 00 секунд.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)