在任务管理线程中,当根据配置计算完成任务第一次执行开始时间和第一次结束开始时间后,将启动任务恢复/暂停调度Timer, 在该timer中主要有以下事情需要做:
- 1.取消调度(this.cancel):启动调度后只能执行一次。
- 2.若为暂停调度
- 2.1 若暂停调度设置为false,那么执行如下,否则直接返回。(默认为true,若任务执行,该值被设置为false)
- 2.2 设置暂停标志为true;
- 2.3 若执行线程不为空,processor不为null, 停止掉执行线程,返回
- 2.4. 重写调度信息
- 2.5 计算下一次暂停时间,重新启动该timer;
- 3.若为恢复调度
- 3.1 若暂停调度标志为true, 执行如下,否则返回:
- 3.2 设置暂停调度标志为false;
- 3.3 根据处理的bean,选择任务对应的处理模式(NOTSLEEP 或者Sleep模式),并设置processor.
- 3.4 重写调度信息
- 3.5 计算下一次开始时间,并重新启动该timer.
Quetion:
当前一次调度任务还没有执行完,第二次调度时间已经到来,此时第二次调度会启动吗?
下一节将讲述TbSchedule任务的执行另外,文章最开始写作于有道笔记,为一边读代码一边写入,部分内容可能没有及时同步。可移步至任务恢复暂停