无需声明额外的 TaskScheduler
No need to declare an extra TaskScheduler
我发现不需要声明一个额外的 TaskScheduler,我可以这样处理我的任务:
<task:scheduled-tasks>
<task:scheduled ref="runScheduler1" method="run" cron="*/5 * * * * *" />
<task:scheduled ref="runScheduler2" method="run" cron="*/5 * * * * *" />
</task:scheduled-tasks>
但是你能帮我解释一下吗,为什么不需要像下面这样?
<task:scheduled-tasks>
<task:scheduled ref="runScheduler1" method="run" cron="*/5 * * * * *" />
</task:scheduled-tasks>
<task:scheduled-tasks>
<task:scheduled ref="runScheduler2" method="run" cron="*/5 * * * * *" />
</task:scheduled-tasks>
普通时间表
<task:scheduled-tasks>
<task:scheduled ref="runScheduler1" method="run" cron="*/5 * * * * *" />
<task:scheduled ref="runScheduler2" method="run" cron="*/5 * * * * *" />
</task:scheduled-tasks>
这部分定义了一个 scheduler
,里面有两个任务。这两项任务将彼此独立执行(根据它们定义的时间表)。
拥有一个包含多个任务的 scheuler
不仅可以将它们组合在一起,还可以让您控制两个任务的共同 thread-pool。
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="runScheduler1" method="run" fixed-rate="5000" />
<task:scheduled ref="runScheduler2" method="run" fixed-delay="500" />
</task:scheduled-tasks>
<task:scheduler id="myScheduler" pool-size="5"/>
上面使用了一个 scheduler
并且还告诉我在我的日程安排中有两个任务,它们有自己的预定义 fixed-delays。有可能两个任务 and/or 单个任务的两次出现相互重叠。
在这种情况下,这些将 运行 在大小为 5 的线程池下并发。
单独的调度程序
<task:scheduled-tasks>
<task:scheduled ref="runScheduler1" method="run" cron="*/5 * * * * *" />
</task:scheduled-tasks>
<task:scheduled-tasks>
<task:scheduled ref="runScheduler2" method="run" cron="*/5 * * * * *" />
</task:scheduled-tasks>
但是,在这个例子中,有两个单独的 schedulers
,每个都有一个任务。
您可以将不同的 schedulers
放置到不同的上下文 xml 文件(如果您有多个上下文 xml)。
您还可以为每个线程池设置单独的线程池(如上例所示)。
只要您不想在两个任务之间进行逻辑分离,并且您不希望每个任务都有单独的 thead-pools,第一种方法应该适合您。
我发现不需要声明一个额外的 TaskScheduler,我可以这样处理我的任务:
<task:scheduled-tasks>
<task:scheduled ref="runScheduler1" method="run" cron="*/5 * * * * *" />
<task:scheduled ref="runScheduler2" method="run" cron="*/5 * * * * *" />
</task:scheduled-tasks>
但是你能帮我解释一下吗,为什么不需要像下面这样?
<task:scheduled-tasks>
<task:scheduled ref="runScheduler1" method="run" cron="*/5 * * * * *" />
</task:scheduled-tasks>
<task:scheduled-tasks>
<task:scheduled ref="runScheduler2" method="run" cron="*/5 * * * * *" />
</task:scheduled-tasks>
普通时间表
<task:scheduled-tasks>
<task:scheduled ref="runScheduler1" method="run" cron="*/5 * * * * *" />
<task:scheduled ref="runScheduler2" method="run" cron="*/5 * * * * *" />
</task:scheduled-tasks>
这部分定义了一个 scheduler
,里面有两个任务。这两项任务将彼此独立执行(根据它们定义的时间表)。
拥有一个包含多个任务的 scheuler
不仅可以将它们组合在一起,还可以让您控制两个任务的共同 thread-pool。
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="runScheduler1" method="run" fixed-rate="5000" />
<task:scheduled ref="runScheduler2" method="run" fixed-delay="500" />
</task:scheduled-tasks>
<task:scheduler id="myScheduler" pool-size="5"/>
上面使用了一个 scheduler
并且还告诉我在我的日程安排中有两个任务,它们有自己的预定义 fixed-delays。有可能两个任务 and/or 单个任务的两次出现相互重叠。
在这种情况下,这些将 运行 在大小为 5 的线程池下并发。
单独的调度程序
<task:scheduled-tasks>
<task:scheduled ref="runScheduler1" method="run" cron="*/5 * * * * *" />
</task:scheduled-tasks>
<task:scheduled-tasks>
<task:scheduled ref="runScheduler2" method="run" cron="*/5 * * * * *" />
</task:scheduled-tasks>
但是,在这个例子中,有两个单独的 schedulers
,每个都有一个任务。
您可以将不同的 schedulers
放置到不同的上下文 xml 文件(如果您有多个上下文 xml)。
您还可以为每个线程池设置单独的线程池(如上例所示)。
只要您不想在两个任务之间进行逻辑分离,并且您不希望每个任务都有单独的 thead-pools,第一种方法应该适合您。