热门
最新
红包
立Flag
投票
同城
我的
发布
CSDN App 扫码分享
评论
5
打赏
- 复制链接
- 举报
下一条:
十四.定时任务和线程休眠定时任务原理:1.加载所有实现@Scheduled注解的方法2.将对应类型的定时器放入相应的“定时任务列表”中3.执行相应的定时任务, 在执行定时任务时, 会开启一个线程. 然后执行ScheduledFutureTask定时任务对象.执行结束后, 会设置好下次的执行时间定时任务的缺点:1.某个定时任务出现异常后, 则无法设置下次执行时间, 因此该任务的后续任务也就无法继续执行2.避免在定时任务中出现死循环, http持续等待无响应定时任务实现和线程休眠的方式对比:1.定时任务是基于继承Runnable接口实现run方法创建线程, 然后执行定时任务对象ScheduledFutureTask的方式. 一次任务执行失败后, 后续无法继续执行2.线程休眠Thread.sleep/TimeUnit.SECONDS.sleep()的方式, 直接调用本地方法. 一次任务执行失败后, 后续也无法执行.3.两种方式都创建了线程, 但定时任务的方式每次都会计算下次执行的时间. 而线程休眠方式是直接调用本地方法. 因此线程休眠的方式占用cpu性能更少.4.两种方式, 如果想要避免在失败后继续执行, 可以采用try...catch... 的方式捕获异常.取舍1.如果项目中定时任务很少(1-3个)时, 建议使用线程休眠的方式2.如果项目中定时任务中等(3以上,上限视情况而定), 建议使用定时任务的方式3.如果项目中定时任务非常多, 以致影响系统正常运行时, 建议可以采取线程休眠的方式来作为优化的一个方向参考: https://blog.csdn.net/gaodebao1/article/details/51789225https://blog.csdn.net/l1028386804/article/details/104585295https://ask.csdn.net/questions/1096235