在我的springmvc应用程序中,我想为一些迭代工作启动一个线程,这将在应用程序的生命周期中每30秒重复一次。如果我为它编写一个单独的servlet,我应该从哪里开始这个线程?或者我应该在某个控制器中启动它?
答案 0 :(得分:4)
使用scheduler而非线程
fixedRate 使得Spring定期运行任务,即使最后一次调用可能仍在运行。
fixedDelay 专门控制上次执行完成时的下一个执行时间。
cron 是源自Unix cron实用程序的功能,可根据您的要求提供各种选项。
@Scheduled(fixedDelay =30000)
public void demoServiceMethod () {... }
@Scheduled(fixedRate=30000)
public void demoServiceMethod () {... }
@Scheduled(cron="0 0 * * * *")
public void demoServiceMethod () {... }
答案 1 :(得分:1)
如何用ServletContextListener
启动它?然后,只要您的Web应用程序启动,它就会启动。
void contextInitialized(ServletContextEvent sce) 接收Web应用程序初始化过程正在启动的通知。
http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContextListener.html
此外,关于计划任务,您可能需要考虑这些选项,这样您就不必重新发明轮子:
干杯!