• 【JAVA】Quartz 任务调度和异步执行器


    Quartz基础结构
            Quartz对任务调度的领域问题进行了高度抽象,提出了调度器(Scheduler)、任务(Job)和触发器(Trigger)这3个核心概念,并在Trigger触发机制的基础上使用org.quartz.Calendar进行定点(如假期)排除。
     
       
        定义任务调度需要以下几个步骤:
    • 定义JobDetail实例对象,该对象需要指定名称、组和Job接口的Class信息。
    • 定义Trigger实例对象,通过该对象设置触发任务的相关信息,如起始时间、重复次数等。
    • 定义Schedule实例对象,通过ScheduleFactory工厂接口的实现类实例该对象。
    • 向Schedule中注册JobDetail和Trigger,有两种方式:
      • 通过Schedule的schedule方法注册,此时它自动让Trigger和JobDetail绑定。
      • 通过addJob和scheduleJob方法注册,此时需要手动设置 Trigger的关联的Job组名和Job名称,让Trigger和JobDetail绑定。
    • 启动调度器(调用Schedule对象的start方法)。
    Cron表达式
        Quartz使用Cron表达式定义时间规则,其中Cron表达式由6或7个空格分隔的时间字段组成。
    • * 表示所有值。
    • ? 表示未说明的值,即不关心它为何值。? 号只能用在日和周域上,为这两域的其中一个指定了值,那就必须在另一个字值上放一个 ?。
    • - 表示一个指定的范围;
    • , 表示附加一个可能值。
    • / 符号前表示开始时间,符号后表示每次递增的值。
    • L 表示这个月最后一天。
    • W 用来描叙最接近指定天的工作日(周一到周五)。
    • # 用来指定这个月的第几个周几。
    • C 指和calendar联系后计算过的值。
    在Spring中使用Quartz
            在Spring中主要是通过配置bean的方式定义ScheduleTriggerJobDetail三个主要实体。通过JobDetailBean和 MethodInvokingJobDetailFactoryBean配置JobDetail信息;通过SimpleTriggerBeanCronTriggerBean配置Trigger信息;通过ScheduleFactoryBean配置Schedule信息。它们具体怎么配置参考源代码的setter方法。
     
    Spring对JDK Timer的支持
            Spring提供了几个JDK Timer的支持类,主要在以下方面对JDK Timer提供支持:
    •     ScheduledTimerTask,它对TimerTask提供封装并提供相关的配置。
    •     通过MethodInvokingTimerTaskFactoryBean类可以将一个Bean的方法封装为TimerTask。
    •     通过TimerFactoryBean可以方便地配置Timer,此外让Timer的生命周期和Spring容器的生命周期相关,在初始化TimerFactoryBean后,启动Timer,在Spring容器关闭前取消Timer
     
     
     
     
     
  • 相关阅读:
    定时器实现点击重新发送信息倒计时显示
    新浪微博5s钟后跳转页面
    时钟制作代码
    判断线段相交
    POJ1265:Area(多边形面积公式+pick公式) 好题
    ACM零散知识
    POJ2318:TOYS(叉积判断点和线段的关系+二分)&&POJ2398Toy Storage
    计算几何初步认识
    UVA10026:Shoemaker's Problem(贪心)
    UVA10020:Minimal coverage(最小区间覆盖)
  • 原文地址:https://www.cnblogs.com/liuyongcn/p/3567843.html
Copyright © 2020-2023  润新知