gpt4 book ai didi

java - 无需声明额外的 TaskScheduler

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:23 24 4
gpt4 key购买 nike

我发现不需要声明额外的 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>

这部分定义了一个包含两个任务的调度程序。这两个任务将彼此独立执行(根据其定义的时间表)。使用一个包含多个任务的调度程序不仅可以将它们组合在一起,还可以让您控制这两个任务共用的线程池。

    <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"/>

上面使用了一个调度程序,并且还表明我的调度程序中有两个任务具有自己的预定义固定延迟。两个任务和/或单个任务的两次出现可能会相互重叠。在这种情况下,它们将在大小为 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>

但是,在此示例中,有两个独立的调度程序,每个调度程序都有一个任务。您可以将不同的调度程序放置到不同的上下文xml文件中(如果您有多个上下文xml)。您还可以为每个线程拥有单独的线程池(如上面的示例所示)。

只要您不想在两个任务之间进行逻辑分离,并且不想为每个任务拥有单独的主题池,那么第一种方法应该适合您。

关于java - 无需声明额外的 TaskScheduler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49163486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com