zoukankan      html  css  js  c++  java
  • 20181111 Quartz(慕课网)

    Quartz体系结构

    三个核心概念

    • 调度器
    • 任务
    • 触发器

    重要组成

    • Job
    • JobBuilder
    • JobDetail
    • JobStore
    • Trigger
    • TriggerBuilder
    • ThreadPool
    • Scheduler

    监听器

    • JobListener
    • TriggerListener
    • SchedulerListener

    Quartz简单使用

    HelloJob的定义

    public class HelloJob implements Job {
        public void execute(JobExecutionContext context) throws JobExecutionException {
            System.out.println("Hello Quartz: " + DateFormatUtils.format(Calendar.getInstance(), "yyyy-MM-dd HH:mm:ss"));
        }
    }
    

    定时调用HelloJob

    JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("name1", "group1").build();
    Trigger trigger = TriggerBuilder.newTrigger().withIdentity("name1", "group1").startNow()
            .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();
    
    Scheduler scheduler = new StdSchedulerFactory().getScheduler();
    scheduler.start();
    System.out.println("任务开始: " + DateFormatUtils.format(Calendar.getInstance(), "yyyy-MM-dd HH:mm:ss"));
    scheduler.scheduleJob(jobDetail, trigger);
    

    Job & JobDetail

    • Job实例在Quartz中的生命周期

    每次调度器执行Job时,它在调用execute方法前会创建一个新的Job实例。
    当调用完成后,关联的Job对象实例会被释放,释放的实例会被垃圾回收机制回收。

    JobDetail

    JobDetail为Job实例提供了许多设置属性,以及JobDataMap成员变量属性,它用来存储特定Job实例的状态信息,调度器需要借助JobDetail对象来添加Job实例

    重要属性

    • name
    • group
    • jobClass
    • jobDataMap

    JobDataMap

    获取JobDataMap中内容的两种方式

    1. 从Map中直接获取
    2. 添加setter方法对应键值

    触发器Trigger

    通用属性

    • JobKey
    • StartTime
    • EndTime

    SimpleTrigger

    • 重复次数可以为0,正整数或是SimpleTrigger.REPEAT_INDEFINITELY常量值
    • 重复执行间隔必须是0或长整数
    • 一旦被指定了endTime参数,那么会覆盖重复次数参数的效果

    CronTrigger

    Cron表达式

    用于配置CronTrigger实例。
    是由7个子表达式组成的字符串,描述了时间表的详细信息。
    格式:秒 分 时 日 月 周 年(可省略)

    特殊字符意义

    字段 是否必填 允许值 允许的特殊字符
    0-59 , - * /
    0-59 , - * /
    0-23 , - * /
    1-31 , - * / ? L W C
    1-12或JAN-DEC , - * /
    1-7或SUN-SAT , - * / ? L C #
    空,1970-2099 , - * /
    符号说明
    字符 含义
    * 所有
    ? 不确定值
    - 区间
    , 多个值,或的意思
    / 递增
    L 最后
    W 指定日期的最近那个工作日
    # 序号,第几
    • LW可以一起使用
    • 周字段不区分大小写,MONmon相同
    • 利用工具生成表达式

    在线Cron表达式生成器

    Scheduler

    • 主要类:StdScheduler
    • 配置参数默认存储在quartz.properties中,在quartz的jar包下,org/quartz/quartz.properties
    • 主要函数
      • scheduleJob
      • start
      • standby(挂起)
      • shutdown(boolean参数,如果传入true,等待所有job完成后关闭,false或者无参数,立即关闭)

    quartz.properties

    • 调度器属性
    • 线程池属性
    • 作业存储设置
    • 插件配置

    Spring集成

    两种方式

    • MethodInvokingJobDetailFactoryBean
    • JobDetailFactoryBean(更灵活)

    参考

  • 相关阅读:
    [leetcode-693-Binary Number with Alternating Bits]
    [leetcode-695-Max Area of Island]
    [leetcode-690-Employee Importance]
    Windows Phone开发(17):URI映射
    Windows Phone开发(18):变形金刚第九季
    Windows Phone开发(19):三维透视效果
    Windows Phone开发(20):当MediaElement和VideoBrush合作的时候
    Windows Phone开发(21):做一个简单的绘图板
    Windows Phone开发(22):启动器与选择器之BingMapsDirectionsTask
    Windows Phone开发(1):概论
  • 原文地址:https://www.cnblogs.com/huangwenjie/p/9943152.html
Copyright © 2011-2022 走看看