Java - планирование ежедневных задач

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

Это должно быть сделано полностью из приложения без вмешательства ОС (например, Windows Task Scheduler)

Я экспериментировал с java.util.Timer в разных конфигурациях, но не добился успеха.

Любая помощь будет оценена.

Благодарю.

6 ответов

Решение

Вы должны взглянуть на Quartz - систему планирования заданий на основе Java.

Возможно, вы захотите использовать что-то вроде кварцевого движка, который может выполнять такие вещи, как выполнение пропущенных задач (например, во время аварийного завершения), и это избавляет от попыток управления потоками.

Например, если вы используете потоки и переведите его в спящий режим и разбудите его через 86400 секунд (один день), вы проснетесь и на час позже (день = 82800 секунд) или рано (день = 90000 секунд) на летнее время меняются, поэтому будьте осторожны с любым решением, которое вы выберете

Встроенный способ JDK - делать то, что предлагали другие, и сначала рассчитывать:

  • currentTime - требуемый момент

Затем вы можете использовать что-то вроде исполнителя расписания для отправки задач и запуска их с определенной задержкой. Это намного проще, чем варианты, которые у вас есть в таких средах, как Quartz, но не требует внешней зависимости.

Кроме того, вы всегда должны указывать, какой JDK вы используете, чтобы люди могли предоставить решения для вашей версии JDK.

Вы можете запустить поток, который рассчитывает разницу до следующих 3 часов дня и спит в течение этого времени. Когда он просыпается, он выполняет метод, пересчитывает и спит. Это то, что вы имели в виду?

Как утверждают другие, Quartz - это выбор, с его помощью вы можете выполнять cron-подобные операции, задания или триггеры, вот ссылка на эту тему: http://www.ibm.com/developerworks/java/library/j-quartz/index.html

Jcrontab

Jcrontab - это планировщик, написанный на Java. Цель проекта - предоставить полностью функциональные графики для проектов Java.

Другие вопросы по тегам