作家
登录

SpringBoot定时任务及Cron表达式详解

作者: 来源: 2017-08-17 12:20:28 阅读 我要评论

  1. import org.springframework.context.annotation.Configuration; 
  2. import org.springframework.scheduling.annotation.SchedulingConfigurer; 
  3. import org.springframework.scheduling.config.ScheduledTaskRegistrar; 
  4.  
  5. import java.util.concurrent.Executors; 
  6.  
  7. /** 
  8.  * Description: 多线程履行准时义务 
  9.  * Designer: jack 
  10.  * Date: 2017/8/10 
  11.  * Version: 1.0.0 
  12.  */ 
  13. @Configuration 
  14. //所有的准时义务都放在一个线程池中,准时义务启动时应用不合都线程。 
  15. public class ScheduleConfig implements SchedulingConfigurer { 
  16.     @Override 
  17.     public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { 
  18.         //设定一个长度10的准时义务线程池 
  19.         taskRegistrar.setScheduler(Executors.newScheduledThreadPool(10)); 
  20.     } 
  21.  

5. 履行结不雅(并发)

经由过程控制台输出的结不雅看出每个准时义务都是在经由过程不合的线程来处理了。

三、cron详解

1. cron表达式定义

Cron表达式是一个字符串,是由空格隔开的6或7个域构成,每一个域对应一个含义(秒 分 时 每月第几天 月 礼拜 年)个中年是可选字段。

然则,此处敲一下黑板,spring的schedule值支撑6个域的表达式,也就是不克不及设定年,如不雅跨越六个则会报错。源码如下:

  1. /** 
  2.      * Parse the given pattern expression. 
  3.      */ 
  4.     private void parse(String expression) throws IllegalArgumentException { 
  5.         String[] fields = StringUtils.tokenizeToStringArray(expression, " "); 
  6.         if (!areValidCronFields(fields)) { 
  7.             throw new IllegalArgumentException(String.format( 
  8.                     "Cron expression must consist of 6 fields (found %d in \"%s\")", fields.length, expression)); 
  9.         } 
  10.         setNumberHits(this.seconds, fields[0], 0, 60); 
  11.         setNumberHits(this.minutes, fields[1], 0, 60); 
  12.         setNumberHits(this.hours, fields[2], 0, 24); 
  13.         setDaysOfMonth(this.daysOfMonth, fields[3]); 
  14.         setMonths(this.months, fields[4]); 
  15.         setDays(this.daysOfWeek, WordStrOrdinals(fields[5], "SUN,MON,TUE,WED,THU,FRI,SAT"), 8); 
  16.         if (this.daysOfWeek.get(7)) { 
  17.             // Sunday can be represented as 0 or

      推荐阅读

      Linux内核态抢占机制分析

    【51CTO晃荡】8.26 带你深度懂得清华大年夜学、搜狗基于算法的IT运维实践与摸索 本文起首介绍非抢占式内核(Non-Preemptive Kernel)和可抢占式内核(Preemptive Kernel)的差别。接着分析L>>>详细阅读


    本文标题:SpringBoot定时任务及Cron表达式详解

    地址:http://www.17bianji.com/lsqh/36757.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)