在springboot中执行定时任务,一般有两种方式,一种是通过@Scheduled的方式,这种方式可以跑多线程,调用相对简单,另外一种方式是通过quartz,这种方式是关于定时任务的比较全面的封装,它可以立即启动任务,设置启动次数,暂停任务,删除任务,恢复任务,还配置了持久化到数据库的方案,很全面,很实用.
这两种方式,都可以通过设置cron表达式来进行定时任务的设置,在这里,值得注意的是,
* 0 3,5 * * ? (表示每天3点和5点整启动一次)
* 25 3,6 * * ?(重点:你以为是每天3点25和6点25启动一次 ,实际上,在使用scheduled跑定时任务的时候,它会在25分的无论那个时刻都会启动,而且不仅仅启动一次,会启动很多次)
解决方案:
修改cron表达式:
修改为: 0 25 3,6 * * ? (这时候,就定位到秒的级别进行启动,那么就只会启动一次就好了)