如今有每天抽数据,统计数据的需求,虽然说我有点明确不了 记录 每个部门 的 贩卖评审流程 的 平均处理时长 这个数据有什么意义。码农?malou!
SpringBoot 从1.3.0版本开始提供对定时任务的支持
准备工作
1、在启动类上添加@EnableScheduling开启定时任务
2、在定时任务上添加@Scheduled(地点的类上添加@Component)
3、写cron表达式或者配置fixedRate/fixedDelay属性
cron表达式
SpringBoot只支持6位的cron表达式,不支持7位(没有Year/年)
SpringBoot只支持cron表达式中的专有符号?,其他的反正用不到就不写了,cron表达式在线天生工具
*******字段SecondsMinutesHoursDayofMonthMonthDayofWeekYear含义秒分时日月星期年符号, - * /, - * /, - * /, - * / ?, - * /, - * /, - * / ?符号解析:
, :枚举
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
开启异步后,每个任务都会从线程池里分配一个线程来执行,制止耗时长的任务影响到其他任务
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |