【发布时间】:2014-01-04 01:43:36
【问题描述】:
我正在尝试使用注释 @Scheduled 和 cron 值执行方法。 该方法执行但不尊重 cron。
这是我的课:
@Component
public class Test {
private static final Logger LOGGER = LoggerFactory.getLogger(Test.class);
@Scheduled(cron = "*/10 * * * * *")
public void run() {
LOGGER.debug("run()");
}
}
我的 applicationContext.xml 的一部分:
<task:executor id="myExecutor" pool-size="5"/>
<task:scheduler id="myScheduler" pool-size="10"/>
<task:annotation-driven executor="myExecutor" scheduler="myScheduler"/>
<bean id="run" class="xxx.Test"></bean>
我在我的 xml 中使用 Spring 3.1 和 spring-task-3.1.xsd。
当我开始时,我应该每 10 秒有一条线,我得到这个:
12/16 15:51:20,033 [---] [DEBUG] [Test:31] - run()
12/16 15:51:29,996 [---] [DEBUG] [Test:31] - run()
12/16 15:54:09,657 [---] [DEBUG] [Test:31] - run()
12/16 15:54:10,000 [---] [DEBUG] [Test:31] - run()
12/16 15:54:19,978 [---] [DEBUG] [Test:31] - run()
12/16 15:54:34,664 [---] [DEBUG] [Test:31] - run()
12/16 15:55:22,137 [---] [DEBUG] [Test:31] - run()
12/16 15:55:34,656 [---] [DEBUG] [Test:31] - run()
12/16 15:55:39,988 [---] [DEBUG] [Test:31] - run()
12/16 15:55:49,981 [---] [DEBUG] [Test:31] - run()
12/16 15:59:07,278 [---] [DEBUG] [Test:31] - run()
每次执行之间的延迟每次都在变化。我使用 FixedRate 或 FixedDelay 进行了测试,但得到了相同的结果。
所以正确找到了类,方法也是,但是它随机触发。
有人知道什么会导致这种行为吗?
我已经搜索了几个小时,但没有任何成功。将计划部分放入 xml 而不是 java 文件中不会改变任何内容,尝试使用属性文件来获取 cron 值。
【问题讨论】: