springboot里做一个定时任务特别的简单
1:在启动文件里开启任务 @EnableScheduling
2:在方法上 设置定时时间@Scheduled(cron = "0/10 * * * * ?")
3:这样就会每十秒执行一次
默认的是单线程,就是一个任务没有执行完毕,下一个任务不会开始。
举个栗子:项目启动后等待10秒,定时任务开始执行,然后第二个10秒,然后第三个10秒。。。
如果第一个10秒 任务里的逻辑没有执行完毕,那么第二次进任务就是下一个定时任务时间,如:第一个定时任务执行15秒,那么
第二次进任务是在第30秒
4:也可以加上异步 @Async
这样的定时任务,每到一个执行间隔就会执行任务,不会去管上一次任务是否已经执行完毕
特别注意:根据业务逻辑需要 去判断要不要添加异步。在我们项目中,定时去更新库存信息,因为并发了 导致库存多次增减,
即使库存表有乐观锁,也没能避免这个错误。