Есть сервис, который надо запускать периодически. Как лучше реализовать периодическое выполнение задания на джаве? Какие "за" и "против" использования Thread.sleep, TimerTask и тредпула?
package main;
import services.Service;
public class Main {
public static void main(String[] args) {
Service s = new Service();
while (true) {
s.service();
try {
Thread.sleep(5000);
}
catch (InterruptedException e) {
}
}
}
}
При разработке прикладного программного обеспечения надо всегда стремиться использовать абстракции как можно более высокого уровня, в особенности если это enterprise-приложение. Не знаю, что конкретно вы имеете ввиду под "сервисом JavaEE", но EJB-контейнер предоставляет инфраструктуру как для управления потоками, так и для периодических задач. Используйте @Schedule и @Timeout вместо Thread.sleep()
, TimerTask
и тому подобного.
@Singleton
public class TimerBean {
@Schedule(second = "*/5", minute = "*", hour = "*", persistent = false)
public void periodicTask() throws InterruptedException {
...
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Учу события кнопки и не могу решить задачу, тк не понимаю с областями видимости и со смыслом
UPDATED Как правильно записывать логи в файл в приложении, что проверяют тестировщики?
при генерации формы на jsp странице использую тег form:radiobuttons, в который передаю список с параметрами