zoukankan      html  css  js  c++  java
  • Quartz使用总结

    一、Quartz是一个任务调度框架。比如你遇到这样的问题

      1、想每月25号,信用卡自动还款

      2、想每年1月15日自己给当年暗恋女神发一封匿名贺卡

      3、想每隔1小时,备份一下自己的爱情动作片 学习笔记到云盘

    这些问题总结起来就是:在某一个有规律的时间点干某件事。并且时间的触发的条件可以非常复杂(比如每月最后一个工作日的17:50),复杂到需要一个专门的框架来干这个事。 Quartz就是来干这样的事,你给它一个触发条件的定义,它负责到了时间点,触发相应的Job起来干活

    二、Quartz核心概念

      1、调度器   2、任务  3、干触发器

    三、体系结构

    四、重要组成

      1、Job  2、JobDetail  3、JobBuilder  4、JobStore  5、Trigger 6、TriggerBuilder  7、ThreadPool  8、scheduler

      9、Calendar  10、监听器JobListener,TriggerListener,SchedulerListener

    五、第一个Quartz程序

    1、引入jar
        <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>2.3.0</version>
    </dependency>   
    2、代码
    public class HelloJob implements Job {
        @Override
        public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
            //打印当前时间
            Date date = new Date();
            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM--dd HH:mm:ss");
            System.out.println("Current Exec Time is>>>" + sf.format(date));
            //todo
            System.out.println("Hello World!");
        }
    }
    /**
     * @Author zhumiao
     * @Date 22:52 2019/1/16
     */
    public class HelloSchedule {
        public static void main(String[] args) throws SchedulerException {
            //创建一个JobDetail实例,将实例与HelloJob class绑定
            JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
                    .withIdentity("myJob","group1").build();
            //创建一个Trigger实例,定义立即执行,并且3秒钟执行一次,到永久
            Trigger trigger = TriggerBuilder.newTrigger().withIdentity("myTrigger","group1")
                                .startNow().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(3).repeatForever())
                                .build();
            //创建scheduler实例
            SchedulerFactory sft = new StdSchedulerFactory();
            Scheduler scheduler = sft.getScheduler();
            scheduler.start();
            Date date = new Date();
            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM--dd HH:mm:ss");
            System.out.println("Current Exec Time is>>>" + sf.format(date));
            scheduler.scheduleJob(jobDetail,trigger);
        }
    }
    View Code

    参考:https://www.cnblogs.com/drift-ice/p/3817269.html

    zhumiao
  • 相关阅读:
    使用Delphi调用条形码控件BarTender打印标签
    我看过的书
    语法规则
    智能家居
    HAL库ADC的DMA采集
    HAL库串口中断接收
    触动心灵的一句话
    摄影技巧
    中国茶道
    单片机延时函数
  • 原文地址:https://www.cnblogs.com/zhumiao/p/10262337.html
Copyright © 2011-2022 走看看