同事的开发任务中有用到了Spring定时器,默认设置为0点0分0秒执行,每隔一小时执行一次,在线上环境产生的数据出现了异常,有的整点时刻产生了两次重复数据,有的整点时刻没有数据。贴日志,
可以看到日志中几个定时任务执行的时间并不是正好在00:00:00执行,而是在这个时间点前后都有触发,误差在几百毫秒以内。由于代码中依赖定时器获取时间,导致获取到的时间并不是一个精确稳定的值导致的数据的错误。谨记:Spring定时器的触发时间并不是精确的,在开发中不要依赖于定时器去获取时间,最好是在时间的可控范围内对想要的时间进行二次的处理。
Spring默认定时器遇到的坑
最新推荐文章于 2024-05-31 15:49:29 发布