Java Spring @Scheduled 任务执行两次

新手上路,请多包涵

我这里有一个简单的测试方法,它设置为每 5 秒运行一次,它确实运行了,但是查看 System.out 你可以看到它似乎在做一些奇怪的事情。

 @Scheduled(cron="*/5 * * * * ?")
public void testScheduledMethod() {
     System.out.println(new Date()+" > Running testScheduledMethod...");
}

输出:

 Wed Jan 09 16:49:15 GMT 2013 > Running testScheduledMethod...
Wed Jan 09 16:49:15 GMT 2013 > Running testScheduledMethod...
Wed Jan 09 16:49:20 GMT 2013 > Running testScheduledMethod...
Wed Jan 09 16:49:20 GMT 2013 > Running testScheduledMethod...
Wed Jan 09 16:49:25 GMT 2013 > Running testScheduledMethod...
Wed Jan 09 16:49:25 GMT 2013 > Running testScheduledMethod...
Wed Jan 09 16:49:30 GMT 2013 > Running testScheduledMethod...
Wed Jan 09 16:49:30 GMT 2013 > Running testScheduledMethod...

为什么它每次运行两次 (出现)

原文由 KS1 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
1 个回答

如果您查看文档,就会有一条注释明确指出了这种现象。

该说明 位于此链接的第 25.5.1 节 下,内容如下:

确保您没有在运行时初始化同一个 @Scheduled 注释类的多个实例,除非您确实希望为每个此类实例安排回调。与此相关,请确保不要在用 @Scheduled 注释并在容器中注册为常规 Spring bean 的 bean 类上使用 @Configurable:否则,您将获得双重初始化,一次通过容器,一次通过 @Configurable 方面,结果是每个 @Scheduled 方法被调用两次。

我知道这只是目前的建议,但我认为我们没有足够的信息来进一步诊断问题。

原文由 nicholas.hauschild 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题