springboot定时任务以及corn表达式

Posted JayMu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot定时任务以及corn表达式相关的知识,希望对你有一定的参考价值。

## springboot的定时任务
### 两步编码实现定时任务。
- 开启定时任务注解  :打开冰箱门 @enableScheduling
- 设置定时时间,corn表达式。 @scheduled
- corn表达式
 -- http://cron.qqe2.com
  corn表达式:空格区分组成部分
  秒     分    时     日         月      星期
  0-59   0-59  0-23  1-31       1-12     1-7 
  ,-*/   ,-*/  ,-*/  ,-*/?LWC   ,-*/     ,-*/?L C # 
  * corn通用表达式
  通用符号: ,-*? 
  ,标识枚举值,例如在minutes域使用5,20.表示在时间的分钟为5,20时触发事件。
  -表示范围,例如在minutes域中使用5-20,表示在时间的分钟为5-20时每分钟都触发事件。
  *表示匹配该区域的任意值,假如在minutes域使用*,表示时间分钟数不做限制,每分钟都触发时间。
  /表示,起始时间开始触发,然后每间隔固定的时间触发一次。
  
  思考题:
  秒 分 时 日 月 周 年
  0  0  2  1  * ?  * 表达什么意思:
  每月的一号的凌晨两点0分0秒。
  秒  分  时 日 月 周
  0 10,44 14 ?  3  WED:
  0秒 14点10分,14点44分3月的星期三。
  在每年的3月的星期三的14点10分0秒和14点44分0秒触发事件。

  专用符号:
  ? 只能用在dayofmonth和dayofweek两个域中使用。
  L 表示最后,
  W 表示有效的工作日,只能出现dayofmonth域。系统将在离指定日期的最近的有效工作日触发事件。
  #  用于确定每个月第几个星期几,只能出现在dayofweek域,例如在 4#2,表示某月的第二个星期三。

  专有符号:
   专有符号除?后,在spring定时任务中都不支持。

   秒 分     时    日  月  周
   0  0/30  9-22   *   *  ?
   表示:每年每月每日的9点到22点每30分钟触发事件,对星期几不设定。

   0  0    9-22/4 * * ?


# 默认单线程的定时任务,如果事件持续事件较长,竟会将后续任务拖延,导致丢失任务。

# spring使用异步多线程实现,两步
- 1.打开同步注解。@EnableAsync
- 2.设置异步执行。@Async

# 总结:
- 1.通过@enableScheduling注解开启定时任务
- 2.通过@Scheduled设置定时任务
- corn表达式
  # # 通用表达式:
  - ,-*/
  # # 专用表法式:
  -  ?
# 异步
 - @enableAsync开启异步执行。
 - @Async设置异步执行的方法。

以上是关于springboot定时任务以及corn表达式的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot--任务:定时任务

corn 定时任务设置

定时任务cron表达式

用java的Quartz包定时调用方法,我想实现每隔一个半小时调用一次方法, 请问Corn表达式怎么写?

springboot简单使用定时(corn)和邮箱发送功能

springboot简单使用定时(corn)和邮箱发送功能