У меня есть веб-приложение, которое синхронизируется с центральной базой данных четыре раза в час. Процесс обычно занимает 2 минуты. Я хотел бы запустить этот процесс как поток в X: 55, X: 10, X: 25 и X: 40, чтобы пользователи знали, что в X: 00, X: 15, X: 30 и X: 45 у них есть чистая копия базы данных. Речь идет только об управлении ожиданиями. Я прошел через исполнителя в java.util.concurrent
, но планирование выполняется с помощью scheduleAtFixedRate
, который, как я считаю, не гарантирует, когда это действительно выполняется с точки зрения часов. Я мог бы использовать первую задержку для запуска Runnable
, чтобы первый был близок к времени запуска и расписанию на каждые 15 минут, но кажется, что это, вероятно, расходится во времени. Есть ли более простой способ запланировать поток для запуска за 5 минут до каждых четверти часа?Запуск java-потока в определенное время
ответ
Вы можете позволить расписанию Runnable его «следующий прогон».
Такие, как,
class Task implements Runnable {
private final ScheduledExecutorService service;
public Task(ScheduledExecutorService service){
this.service = service;
}
public void run(){
try{
//do stuff
}finally{
//Prevent this task from stalling due to RuntimeExceptions.
long untilNextInvocation = //calculate how many ms to next launch
service.schedule(new Task(service),untilNextInvocation,TimeUnit.MILLISECONDS);
}
}
}
TimerTask
ручка этот случай.
Если вы не хотите, чтобы сохранить планирование рабочих мест, вы можете посмотреть в инструмент планирования работы как Quartz.
Quartz был бы хорош, так как вы используете приложение на основе Интернета. Это обеспечит точное планирование по времени, которое вам нужно.
Кварц является полнофункциональным, открытым исходным кодом работы службы планирования, которая может быть интегрирован с, или использоваться наряду практически любой Java EE или Java SE приложений - от самых маленьких автономного приложения к самая большая система e-commerce. Кварц можно использовать для создания простых или сложных графиков для выполнения десятков, сотен или даже десятков тысяч рабочих мест; задания, задачи определены как стандартные компоненты Java , которые могут выполнять практически все, что вы можете запрограммировать для них. Кварцевый планировщик включает в себя множество функций класса , таких как JTA транзакций и кластеризации.
- 1. Запуск Powershell в определенное время
- 2. Запуск задачи за определенное время
- 3. Запуск метода через определенное время
- 4. Запуск junit test определенное время
- 5. Запуск фоновой задачи в определенное время - UWP
- 6. Android Запуск задачи в определенное время
- 7. Запуск функции (кода) в определенное время
- 8. Запуск перехода на определенное время в Android?
- 9. Запуск приложения ежедневно/в определенное время
- 10. Python резьбы - Запуск функции в определенное время
- 11. Запуск макроса VBA excel в определенное время
- 12. Запуск Python в определенное время с Datetime
- 13. Запуск SQL-процесса в определенное время
- 14. Запуск URL-адреса в определенное время (AWS)
- 15. Удаленный запуск сценария автоматически через определенное время
- 16. Запуск функции Javascript через определенное время
- 17. Запуск метода/функции за определенное время
- 18. запуск скрипта только на определенное время
- 19. Запуск рабочего процесса SharePoint в определенное время суток или через определенное время
- 20. Запуск метода в фоновом режиме в iOS в определенное время
- 21. Запуск программы или метода в определенное время в Java
- 22. Запуск параметризованного задания в определенное время в jenkins
- 23. Можно ли планировать запуск агента в VOLTTRON в определенное время?
- 24. Запуск узла сервера в определенное время суток в среде Ubuntu?
- 25. Сайт ASP.NET - запуск некоторого кода в определенное время
- 26. Make задерживается работа запуск в определенное время даты
- 27. Запуск и остановка видео Проигрыватель Windows Media в определенное время
- 28. Запуск видео vimeo в определенное время запуска с помощью fancybox
- 29. Как запланировать запуск скрипта Python в определенное время?
- 30. Запуск фоновой задачи в определенное время - Windows 10 App
Дит это так и работает прекрасно. Благодарю. – rmarimon
@rmarimon: NP :) Просто будьте осторожны, чтобы «RuntimeException» может остановить периодическое выполнение. Я был сожжен этим, поэтому я отредактировал ответ соответственно. –
Я просто изменил его. У меня было это как try {} catch (Exception e) {}, а затем перепланировать. Но, наконец, кажется, что это правильный подход. – rmarimon