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


Автор: lugaru 16.9.2012, 18:07
Вот почитал но не нашел. Сожно ли как то в джаве реализовать ожидания времени, к примеру, что бы функция срабатывала каждый день в 11.59? или дважды в день в 14,00 и 15,00?

Автор: Stolzen 16.9.2012, 18:30
Должен подойти http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Timer.html 
Для чего-то сложнее можно попробовать http://www.sauronsoftware.it/projects/cron4j/ или спринговый TaskScheduler 

Автор: COVD 17.9.2012, 13:54
Цитата

Сожно ли как то в джаве реализовать ожидания времени, к примеру, что бы функция срабатывала каждый день в 11.59?


В Timer есть методы schedule с параметрами long delay, long period. Надо установить period = 24 * 60 * 60 * 1000 (количество миллисек в сутках). delay - время ожидания перед первым срабатыванием. Например, программа стартует в 11:00:00. Тогда delay = 59 * 60 * 1000 (количество миллисек в 59 минутах). 

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

Автор: lugaru 17.9.2012, 16:19
Спасибо, идю понял. Система будет перезагружаться раз в неделю. Так что годичная перезагрузка не страшна)))
schedule хороша но не совсем под программу, не хочеться ее переписывать, я так понял данныя функция принимает тараметр Object а мне надо всего лиш функцию, а на нее данная функция ругаеться благим матом))) так что пока два варианта, КРОН и СЛИП

Автор: COVD 17.9.2012, 16:44
Цитата

данныя функция принимает тараметр Object а мне надо всего лиш функцию

Этот обьект - TimerTask, разновидность Runnable.
Код

      Timer timer = new Timer();
      TimerTask task = new TimerTask(){

            @Override
            public void run() {
                // here is your function code
            }
          
      };
      long delay = 0;
      long period = 24*60*60*1000;
      timer.schedule(task, delay, period);

Автор: lugaru 17.9.2012, 18:16
Спасибо, попробую)

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