Мне нужно запланировать задачу для выполнения в определенный промежуток времени. Как я могу сделать это с поддержкой длинных интервалов (например, каждые 8 часов)?
Я сейчас пользуюсь java.util.Timer.scheduleAtFixedRate
. java.util.Timer.scheduleAtFixedRate
Поддерживает ли длительные интервалы времени?
TimeUnit
относится как к, такinitialDelay
и кperiod
. Запуск через каждые 24 часа в конечном итоге будет сброшен при включении DST, но aTimeUnit
ofDAYS
не позволяет вам указать мелкозернистыйinitialDelay
. (Я думаю, внутренняя реализация ScheduledExecutorServiceDAYS
в любом случае преобразуется в наносекунды).Вы должны взглянуть на Quartz - это Java-фреймворк, который работает с выпусками EE и SE и позволяет определять задания для выполнения в определенное время.
источник
Попробуйте так ->
Сначала создайте класс TimeTask, который запускает вашу задачу, он выглядит так:
затем в основном классе вы создаете экземпляр задачи и периодически запускаете ее к указанной дате:
источник
Используйте Google Guava,
AbstractScheduledService
как указано ниже:}
Если у вас есть больше подобных сервисов, тогда регистрация всех сервисов в ServiceManager будет хорошей, так как все сервисы можно запускать и останавливать вместе. Читайте здесь для получения дополнительной информации о ServiceManager.
источник
Если вы хотите придерживаться
java.util.Timer
, вы можете использовать его для планирования через большие промежутки времени. Вы просто проходите период, за который стреляете. Проверьте документацию здесь .источник
Эти два класса могут работать вместе, чтобы запланировать периодическое задание:
Запланированное задание
Запустить запланированное задание
Ссылка https://www.mkyong.com/java/how-to-run-a-task-periodically-in-java/
источник
Если ваше приложение уже использует Spring Framework, у вас есть встроенное планирование
источник
Делай что-нибудь каждую секунду
источник
Я использую функцию Spring Framework. ( jar -контекстная зависимость jav или maven).
ScheduledTask - это мой собственный интерфейс с моим пользовательским методом execute , который я называю своей запланированной задачей.
источник
Вы пробовали Spring Scheduler, используя аннотации?
Вы можете сделать это и с XML.
источник
мой сервлет содержит это как код, как сохранить это в планировщике, если пользователь нажимает принять
источник