quartZ的使用

2020-03-17  本文已影响0人  沃林

quartZ

注:本文章只是自己在学习中记的笔记(可能有点乱),只提供参考。如有错误请指出。

一.简介

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。但是相较于Timer, Quartz增加了很多功能

  • 持久性作业 - 就是保持调度定时的状态;
  • 作业管理 - 对调度作业进行有效的管理;

官网:http://www.quartz-scheduler.org/

二.QuartZ设计模式

三.核心概念

graph BT
    a1(SimpleTrigger) -.-> B(&ltInterface&gtTrigge)
    a2(CronTrigger) -.<font color=#ccc>实现</font>.-> B(&ltInterface&gtTrigge)
    a3(自定义的Trigger) -.-> B(&ltInterface&gtTrigge)

四.QuartZ几个常用的API

五.QuartZ的使用

  1. 准备工作(创建项目,导入jar包)

            <!--定时调度任务-->
            <dependency>
                <groupId>org.quartz-scheduler</groupId>
                <artifactId>quartz</artifactId>
                <version>2.3.2</version>
            </dependency>
            <dependency>
                <groupId>org.quartz-scheduler</groupId>
                <artifactId>quartz-jobs</artifactId>
                <version>2.3.2</version>
            </dependency>
    
  2. 创建j我们要做定时任务的类(实现org.quartz.Job)

    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    
    public class MyJob implements Job {
     
        
        public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException  {
            SimpleDateFormat format = new SimpleDateFormat("yy-MM-dd HH-mm-ss");
            String date = format.format(new Date());
            System.out.println(date);
        }
    }
    
  3. 创建Schedule,执行任务

    import org.quartz.*;
    import org.quartz.impl.StdSchedulerFactory;
    
    /**
     * @author shkstart
     * @create 2020-03-11 15:22
     */
    public class QuartzTest {
        public static void main(String[] args) throws Exception {
            //创建调度器Scheduler方式一
             //Scheduler scheduler1 = StdSchedulerFactory.getDefaultScheduler();
            //创建调度器Scheduler方式二
            StdSchedulerFactory schedulerFactory = new StdSchedulerFactory();
            Scheduler scheduler = schedulerFactory.getScheduler();
    
           
    
            //创建JobDetail实例,并与quartZ类绑定(Job执行内容)
            JobDetail jobDetail = JobBuilder.newJob(MyJob.class).withIdentity("h1", "group1").usingJobData("count","11111").build();
    
            //触发器
            SimpleTrigger trigger = TriggerBuilder.newTrigger().withIdentity("t1", "group1")
                    .startNow()//立即执行
                    .withSchedule(SimpleScheduleBuilder.simpleSchedule()//simpleSchedule触发器
                            .withIntervalInSeconds(5)//几秒执行一次
                            .repeatForever()//一直执行
                    ).build();
    
            //执行,让调度器关联任务和触发器
            scheduler.scheduleJob(jobDetail, trigger);
            scheduler.start();
        }
    }
    
  4. 运行main方法,可以看到控制台每5秒打印一次时间

六.Quartz核心详解

上一篇下一篇

猜你喜欢

热点阅读