SpringMVC如何使用应用程序启动启动一个线程

时间:2014-09-08 09:29:33

标签: java multithreading spring-mvc

在我的springmvc应用程序中,我想为一些迭代工作启动一个线程,这将在应用程序的生命周期中每30秒重复一次。如果我为它编写一个单独的servlet,我应该从哪里开始这个线程?或者我应该在某个控制器中启动它?

2 个答案:

答案 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

此外,关于计划任务,您可能需要考虑这些选项,这样您就不必重新发明轮子:

干杯!