Spring Task Executor计划了太多任务实例

时间:2011-09-02 18:46:55

标签: java spring scheduled-tasks threadpool

我有一个简单的Spring Scheduled Taks,由以下内容定义:

<context:component-scan base-package="com/test"/>
<task:scheduled-tasks>
    <task:scheduled ref="myScheduler" method="doMyTask" fixed-rate="300000"/>
</task:scheduled-tasks>

<task:scheduler id="taskScheduler" pool-size="1"/>

<task:executor id="executorWithPoolSizeRange"
               pool-size="1"
               queue-capacity="100"/>

<bean id="cleanupClass" class="com.test.CleanupClass">
   <property name="myProperty" value="3600"/>
</bean>

我想每5分钟同步运行一个线程。但是,我得到的是每5分钟连续运行任务的五个实例。有谁知道上面的XML描述中是否缺少某些内容?

我使用@Scheduled注释得到了我想要的行为,但我宁愿不使用固定速率的注释,因为我希望它可以在代码之外进行配置。

感谢。

3 个答案:

答案 0 :(得分:1)

以下为我工作:

  <bean id="task" class="com.foo.MyTask">
  <task:scheduled-tasks scheduler="scheduler">
    <task:scheduled ref="task" method="run" fixed-delay="300000" />
  </task:scheduled-tasks>
  <task:scheduler id="scheduler" pool-size="10" />

问候, 标记

答案 1 :(得分:0)

这是您在将其部署到tomcat时在STS中看到的行为吗?如果是这样,您可能希望取消部署应用程序,重新部署它并重新启动应用程序。

答案 2 :(得分:0)

另一个想法是使用属性文件中的SPEL表达式将其与@Sched批注一起使用。这样,在使用该注释时它仍然是可配置的。