@Scheduled笔记

@Scheduled笔记
spring提供的定时任务注解,使用方便,简记一下具体实现
1.首先要在项目中添加@EnableScheduling注解,启用一下
2.在需要执行的方法上添加@Scheduled注解
完成以上两步,任务就配置好了.

接下来看一下,spring对@Scheduled的处理流程类:
ScheduledAnnotationBeanPostProcessor
核心编码是:

public Object postProcessAfterInitialization(Object bean, String beanName)

annotatedMethods.forEach((method, scheduledMethods) ->
						scheduledMethods.forEach(scheduled -> processScheduled(scheduled, method, bean)));
其中method是被@Scheduled注解的方法,
scheduledMethods是在method上加的@Scheduled配置的集合
bean是method所在的实例

再具体看一下processScheduled(scheduled, method, bean)的处理逻辑:

this.registrar.scheduleCronTask(new CronTask(runnable, new CronTrigger(cron, timeZone)))
cron表达式任务添加
this.registrar.scheduleFixedDelayTask(new FixedDelayTask(runnable, fixedDelay, initialDelay))
固定延时任务
this.registrar.scheduleFixedRateTask(new FixedRateTask(runnable, fixedRate, initialDelay))
固定频率任务
添加了三种类型的任务到注册器上.

注册任务的执行器只要在容器中有就可以:

this.registrar.setTaskScheduler(resolveSchedulerBean(this.beanFactory, TaskScheduler.class, false));
或者
this.registrar.setScheduler(resolveSchedulerBean(this.beanFactory, ScheduledExecutorService.class, false))
或者
this.registrar.setScheduler(resolveSchedulerBean(this.beanFactory, ScheduledExecutorService.class, true))

简单附加一下,TaskScheduler的几个实现

ConcurrentTaskScheduler
ThreadPoolTaskScheduler

其次可以通过SchedulingConfigurer直接对任务注册器进行配置.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值