最近的项目中需要定时器来完成定时任务,随手就写了一个。然后就没有管了,后来调一个东西,追踪tomcat的日志,心血来潮正好看看定时任务的效果,一看不得了。自己的定时任务竟然执行了两次,虽然对自己的功能无伤大雅,但作为一个写程序的,怎么能容忍。就各种查资料,一看,恩!好多人和我一样。不过看了几眼便索然无味。全是appBase和docBase的问题。关键是我的汤姆猫没有设置这些东西。话不多说,立即测试测试。
首先我们来一个测试的定时器:
@Component
@Configurable
@EnableScheduling
public class TestTimer {
@Scheduled(cron = "0/3 * * * * ?")
public void deadline() {
System.out.println("开始执行测试任务===========================================");
}
}
先放到本地进行测试,没问题啊,只执行一次。OK,线上的是tomcat,下载个tomcat然后放入tomcat,运行…
我的天,竟然一次运行两次,反复观察,最终