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
原文地址:https://www.cnblogs.com/zhumiao/p/10262337.html