Скорее используйте ScheduledExecutorService # scheduleAtFixedRate () вместо старомодного Thread # sleep () . Вы можете использовать ServletContextListener , чтобы запускать его при запуске веб-приложения и останавливать его при завершении работы веб-приложения.
ScheduledExecutorService # scheduleAtFixedRate ()
Thread # sleep ()
ServletContextListener
@WebListener public class Config implements ServletContextListener { private ScheduledExecutorService scheduler; @Override public void contextInitialized(ServletContextEvent event) { scheduler = Executors.newSingleThreadScheduledExecutor(); scheduler.scheduleAtFixedRate(new Task(), 0, 1, TimeUnit.MINUTES); // Schedule to run every minute. } @Override public void contextDestroyed(ServletContextEvent event) { scheduler.shutdown(); // Important! This stops the thread. } }
Где Задача может выглядеть так:
Задача
public class Task implements Runnable { @Override public void run() { log(something); } }
Если ваша среда не поддерживает Servlet 3.0 @WebListener , то зарегистрируйте его в web.xml , чтобы запустить его:
@WebListener
web.xml
<listener> <listener-class>com.example.Config</listener-class> </listener>