在项目中使用@Scheduled声明,cron表达式的值为"0 0 0 * * ?",结果在2017-10-07 00:00:00,000执行,但是接下来的执行时间确为2017-10-07-23:59:59,895,很是迷惑,求高手解答。
附图:
你换成 1 0 0 * * ? 呢?
目前的解决方案就是把cron表达式修改为"0 30 0 * * ?",就是想知道具体原因
@望山凤: 不太清楚,按道理而言linux的时间精度偏差应该小于1ms,你看下crontab中有没有ntpdate之类的玩意在校对时间。
@Daniel Cai: ;linux服务器确实在crontab中ntpdate,有影响吗?
@望山凤: 它的执行时间配置是什么呢?
@Daniel Cai:
@Daniel Cai: 时间同步服务也是在0点,是不是可能出现时间抖动的情况
@望山凤: 可能吧,最好你错开这个时间点。
楼上正解,你这个是要每天凌晨零点执行,但是有时候确实会有毫秒级的误差,操作系统在执行多个任务时是不可能保证百分百无误差定时执行某个任务的。
百分百无误差是不可能的.
延后可以理解,但是提前觉着有点诡异
@望山凤: 所以每天处理的定时任务都是定到1点的.
误差从来都是左右误差.