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设置异步执行的方法。