Моя программа имеет компонент, называемый планировщиком, который позволяет другим компонентам регистрировать моменты времени, в которые они хотят получить обратный вызов. Это должно работать так же, как служба Unix cron, т.е. е. Вы говорите Планировщику: «Сообщите мне через десять минут после каждого полного часа».
Я понимаю, что в Java нет реальных обратных вызовов.
Вот мой подход, есть ли библиотека, которая уже занимается этим? Не стесняйтесь предлагать улучшения тоже.
Регистрация звонка на планировщик пропусков:
- указание времени, содержащее часы, минуты, секунды, месяц года, dom, dow, где каждый элемент может быть не указан, что означает «выполнять его каждый час / минуту и т. Д.» (так же, как crontabs)
- объект, содержащий данные, которые сообщают вызывающему объекту, что делать, когда он уведомлен планировщиком. Планировщик не обрабатывает эти данные, просто сохраняет их и передает обратно после уведомления.
- ссылка на вызывающий объект
При запуске или после нового запроса на регистрацию Планировщик запускается с объектом Calendar текущего системного времени и проверяет, есть ли какие-либо записи в базе данных, которые соответствуют этому моменту времени. Если они есть, они выполняются, и процесс начинается заново. Если нет, время в объекте Calendar увеличивается на одну секунду, и entreis перепроверяются. Это повторяется до тех пор, пока не будет найдена одна или несколько записей. (Моделирование дискретных событий)
Затем планировщик будет помнить эту временную метку, спать и просыпаться каждую секунду, чтобы проверить, не существует ли она уже. Если случается, что оно просыпается, и время уже прошло, оно начинается снова, также, если время пришло и задания были выполнены.
Редактировать : Спасибо, что указали мне на Кварц. Однако я ищу что-то гораздо меньшее.