gpt4 book ai didi

java - 为什么Spring任务调度程序不同时执行任务?

转载 作者:行者123 更新时间:2023-11-30 02:55:12 26 4
gpt4 key购买 nike

我有以下配置来运行任务--

<bean id="trendDataJob" class="com.ge.og.realtrack.scheduler.TrendDataJob"> </bean>

<task:scheduled-tasks>
<task:scheduled ref="trendDataJob" method="trendJob" cron="#{trendDataJob.configMap['corn_exp']}"></task:scheduled>
<task:scheduled ref="trendDataJob" method="metaDataTrendJob" cron="#{trendDataJob.configMap['metadata_corn_exp']}"></task:scheduled>
</task:scheduled-tasks>

此任务的 cron 表达式为 corn_exp=0 0/1 * * * ? 每分钟运行一次。

这里存在问题,因为 trendDataJob 的两种方法都计划每分钟运行一次,但它们会在第一个 trendJob 完成后依次执行,然后执行 metaDataTrendJob 我无法理解这种行为。

另一个问题是,如果方法需要超过一分钟才能完成......它不会触发下一个调用,直到当前调用完成并返回。

最佳答案

默认情况下,调度程序使用带有单个线程的ConcurrentTaskScheduler。如果您想要另一个,请配置它并将其传递给 scheduled-tasks scheduler 属性。

最简单的方法(在 XML 中)是使用 scheduler 元素。 (请参阅引用指南中的this section)。

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

然后只需将其注册到另一个元素上即可。

<task:scheduled-tasks scheduler="scheduler"> ...

关于java - 为什么Spring任务调度程序不同时执行任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37434403/

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