0

我正在使用 spring 3 调度和线程池框架。我想在不同的时间/间隔安排不同的任务。我希望每个任务在另一个任务开始之前运行完成。

IE 如果我有 task1 和 task2:task1 每 10 分钟运行一次,运行时间为 1 分钟 task2 每天运行一次,运行时间为 5 分钟。

如果 task1 和 task2 计时器同时触发,我希望将 task1 和 task2 放在一个队列中,并且一次只取消一个任务。

我知道我可以使用 Spring ThreadPoolTask​​Executor 进行设置,即

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

但是我不确定如何将该执行程序挂接到调度程序中。使用 Spring ThreadPoolTask​​Scheduler 时,您只能设置 poolSize 而不是 queueSize

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

有谁知道我如何能够一起使用 Spring 执行器和调度程序服务来实现我的目标?

4

1 回答 1

1

你可以通过两种方式做到这一点:

一种是明确指定您的调度程序和 taskExecutor 作为task:annotation-driven标签的一部分:

<task:annotation-driven executor="executor" scheduler="scheduler"/>

或者作为计划任务的一部分,您可以注入 executor 并明确提交给 executor:

executor.execute(myrunnable/callable)
于 2012-10-30T19:50:31.310 回答