Войти или зарегистрироваться

Помогите Таймер

  • Автор темы Автор темы doodka
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

doodka

Активный участник
Пользователь
Баллы
68
Добрый вечер.
Как лучше реализовать данную задачу: есть, например, 3 числа-реальное время и нужно вызывать ф-ю, когда оно настало.

Пример:
В конфиг записаны числа(время по МСК):
16:20, 21:00, 22:00 и т.д.
Когда наступает 16:20 -вызывается функция. В следующий раз такое повторяется в 21:00 и т.д.
 
Добрый вечер.
Как лучше реализовать данную задачу: есть, например, 3 числа-реальное время и нужно вызывать ф-ю, когда оно настало.

Пример:
В конфиг записаны числа(время по МСК):
16:20, 21:00, 22:00 и т.д.
Когда наступает 16:20 -вызывается функция. В следующий раз такое повторяется в 21:00 и т.д.
Взять банальный шедуллер, который раз в несколько секунд будет заниматься проверкой времени.
 
doodka,
Варианты:
1. Можно взять текущее время и вычислить сколько нужно подождать до часа Х. И выполнить задание, отложенное на это время.
2. Можно сделать повторяющееся задание, который каждую секунду проверяет наступило ли нужное время или нет.
3. Можно воспользоваться сторонней библиотекой. Я для ReActions выбрал класс CronExpression из пакета Quartz Scheduler. Хотя по идее можно было воспользоваться большим функционалом пакета, но мне хватило одного класса.

Собственно в ReActions я и использую смесь второго и третьего метода: https://github.com/fromgate/ReActio...romgate/reactions/timer/Timers.java#L188-L200
 
Таймеры, в которых важна точность хорошо делать в отдельном потоке, чтобы они не лагали вместе с сервером.
 
Можно просто создать BukkitRunnable и в методе runTastTimer(this, 1L, 20L) поставить периодичность 72000L (вместо 20L. 72000L = 1 час), а в его личном цикле run прописать функции=)
 
Можно просто создать BukkitRunnable и в методе runTastTimer(this, 1L, 20L) поставить периодичность 72000L (вместо 20L. 72000L = 1 час), а в его личном цикле run прописать функции=)

Зачем опять тему поднял?
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх