本章将围绕trigger()进行分析
前一章节介绍了核心原理:
1、获取所有即将执行的任务
2、依次执行
3、更新所有下次执行时间
问题导入:
1、当前执行时间是15:49:59,有的任务15:50:00执行,当需要
2、如果任务多,并且频繁执行,并且核心原理为同步代码块,会不会导致任务延时执行?
// PRE_READ_MS = 5000 long nowTime = System.currentTimeMillis(); // 预读:读取当前时间+5000毫秒的数据 List<XxlJobInfo> scheduleList = XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().scheduleJobQuery(nowTime + PRE_READ_MS, preReadCount); // 根据所有查询处的定时任务循环 for (XxlJobInfo jobInfo: scheduleList) { if (nowTime > jobInfo.getTriggerNextTime() + PRE_READ_MS) { // ------------------------now // trigger+5000--------------- // 当前时间 > 触发事件+5000, 说明当前任务已经错过了 // 获取如果超过了触发时间+5000,进入到策略:1、丢弃;2、trigger触发 MisfireStrategyEnum misfireStrategyEnum = Misfir