在Spring中实例化新线程以定期执行任务

时间:2013-05-02 11:15:38

标签: java spring task

我有一个用Spring制作的仪表板,必须控制一些任务执行。基本思想是让一个线程定期向远程跟踪器发送此任务。我怎样才能实现这个帖子?我一直在阅读,有些人说使用线程不是一个好主意。这会导致Spring生命周期出现问题吗?是否有其他方法可以定期调用方法?

6 个答案:

答案 0 :(得分:5)

Spring支持任务调度。在此处查找更多信息:

E.g。您可以在应用程序上下文中配置计划任务,如下所示:

<task:scheduled-tasks scheduler="myScheduler">
  <task:scheduled ref="beanA" method="methodA" fixed-delay="5000"/>
</task:scheduled-tasks>

<task:scheduler id="myScheduler" pool-size="10"/>

答案 1 :(得分:2)

使用Spring时,您可以尝试Spring自己的任务调度。可以找到一个很好的教程 here

我已经使用过这个了,效果很好。

答案 2 :(得分:2)

如果您需要一个与spring完美配合的强大任务调度程序,请使用quartz scheduler。您可以配置用于调度程序的线程数等等。 这里没有令人头疼的线程控制,石英调度程序可以很好地管理它。

可以在spring中配置它来处理非常复杂的计划,例如

每天从上午12点到凌晨4点每分钟触发一次。

http://quartz-scheduler.org/了解更多信息。

答案 3 :(得分:0)

您可以使用@Scheduled注释或者您可以创建自己的线程并使其休眠并再次定期调用。

答案 4 :(得分:0)

将弹簧与石英相结合,让您的生活更轻松,满足所有预定的任务要求。这是一个可以帮助您的教程:

http://www.mkyong.com/spring/spring-quartz-scheduler-example/

答案 5 :(得分:0)

就我而言,我想每个月运行一次代码

我想说我要执行remove类中的EmptyScopesRemoverImpl函数

所以在spring xml中添加这个

<task:scheduled-tasks>
    <task:scheduled ref="EmptyScopesRemover" method="remove" cron="0 0 0 1 * *"/>
</task:scheduled-tasks>

有关cron值及其检查内容的详细信息,请检查https://stackoverflow.com/a/32521238/4251431

目前,该值意味着在the midnight on the first day of every month运行该功能。

请注意EmptyScopesRemover只是一个bean引用该类