SpingBoot @Scheduled定时任务
现在有每天抽数据,统计数据的需求,虽然说我有点理解不了 记录 每个部门 的 销售评审流程 的 平均处理时长 这个数据有什么意义。码农?malou!
SpringBoot 从1.3.0版本开始提供对定时任务的支持
准备工作
1、在启动类上添加@EnableScheduling开启定时任务
2、在定时任务上添加@Scheduled(所在的类上添加@Component)
3、写cron表达式或者配置fixedRate/fixedDelay属性
cron表达式
SpringBoot只支持6位的cron表达式,不支持7位(没有Year/年)
SpringBoot只支持cron表达式中的专有符号?,其他的反正用不到就不写了,cron表达式在线生成工具
| * | * | * | * | * | * | * | |
|---|---|---|---|---|---|---|---|
| 字段 | Seconds | Minutes | Hours | DayofMonth | Month | DayofWeek | Year | 
| 含义 | 秒 | 分 | 时 | 日 | 月 | 星期 | 年 | 
| 符号 | , - * / | , - * / | , - * / | , - * / ? | , - * / | , - * / | , - * / ? | 
符号解析:
, :枚举
		eg:Seconds中1,5,表示在第1秒,第5秒的时候触发事件
-   :范围
		eg:Seconds中1-5,表示在1秒到5秒,这个区间内每秒都触发事件
* :通配符
		eg:Seconds中使用,表示每一秒都触发事件
/ :间隔
		eg:Seconds中1/5,表示第1秒触发一次,后隔5秒触发一次事件
? :不指定值
		只能用在DayofMonth和DayofWeek两个域,两者互斥,须对其一设置
fixedRate
@Schedule中的属性,用于指定任务执行的时间间隔(单位为毫秒),表示以固定的频率执行某个方法或任务
eg:如果设置为1s,任务将每隔1s执行一次,每次任务执行开始后等待1s再执行下一次
fixedRate从上一次方法执行开始的时间算起,如果上一次方法执行时间超过了间隔时间,那上一次任务执行完之后,立即执行下一个任务
fixedDelay
@Schedule中的属性,用于指定任务执行之间的延迟时间(单位为毫秒),表示以固定的时间间隔执行某个方法或任务,并在每次执行完成后等待指定的延迟时间再执行下一次
eg:如果设置为1s,任务将每隔1s执行一次,每次任务执行完成后等待1s再执行下一次
fixedDelay从上一次方法执行完成的时间算起,如果上一次方法执行阻塞住了,会等到上一次方法执行完,并等待给定间隔时间之后执行下一次
开启异步来执行定时任务
1、在启动类上添加注解@EnableAsync
2、定时任务上添加@Async
开启异步后,每个任务都会从线程池里分配一个线程来执行,避免耗时长的任务影响到其他任务

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号