Quartz初识以及简单运用

 1、初识Quartz

 1.1、概述

  •  Quartz是一个完全由Java编写的一个开源的任务调度框架,说的简单点就是开发人员可以通过Quartz根据时间间隔调度任务,例如:
    • 每隔一小时命令程序执行一个任务
    • 每个月命令程序执行一个任务
    • 指定某月末日命令程序执行一个任务
    • ……
  • Quartz下载地址:http://www.quartz-scheduler.org/downloads/

1.2、Quartz API

1.2.1、Scheduler——与scheduler交互的主要API;

  Scheduler的生命周期从SchedulerFactory创建它时开始,到Scheduler调用showdown()方法结束。Scheduler只有在调度start()方法后才会真正的触发trigger(执行job)。Scheduler被创建后可以增加、删除、和列举Job和Trigger,以及执行其它与调度相关的操作。

1.2.2、Job——由调度程序执行的任务需要实现的接口

1.2.3、JobDetail——定义Job的实例

1.2.4、Trigger——触发Job的执行

1.2.5、JobBuilder——定义创建JobDetail实例的接口

1.2.6、TriggerBuilder——定义创建Trigger实例的接口

2、Hello Quartz 简单运用

2.1、首先实现一个简单的小demo《Hello Quartz!》,具体需求:每隔5秒通过控制台输出一句“hello quartz!”;

2.2、代码

 1 package com.xxw.test;
 2 
 3 import org.quartz.Job;
 4 import org.quartz.JobExecutionContext;
 5 import org.quartz.JobExecutionException;
 6 
 7 public class MyJob implements Job{
 8 
 9     @Override
10     public void execute(JobExecutionContext arg0) throws JobExecutionException {
11         System.out.println("hello quartz!");
12     }
13     
14 }
 1 package com.xxw.test;
 2 
 3 import static org.quartz.JobBuilder.newJob;
 4 import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
 5 import static org.quartz.TriggerBuilder.newTrigger;
 6 
 7 import org.quartz.JobDetail;
 8 import org.quartz.Scheduler;
 9 import org.quartz.Trigger;
10 import org.quartz.impl.StdSchedulerFactory;
11 
12 public class HellowQuartz {
13 
14     public static void main(String[] args) {
15         try {
16             // 定义JobDetail
17             JobDetail job = newJob(MyJob.class) // 定义Job类为MyJob类,这个类是任务逻辑类
18                     .withIdentity("job1", "group1") // 定义name/group
19                     .build();
20             
21             // 定义一个Trigger
22             Trigger trigger = newTrigger()
23                     .withIdentity("trigger1", "group1") // 定义name/group
24                     .startNow() // 一旦加入scheduler,立刻生效
25                     .withSchedule(
26                             simpleSchedule() // 使用simpleSchedule
27                             .withIntervalInSeconds(5) // 每隔5秒执行一次
28                             .repeatForever()) // 一直执行
29                     .build();
30             
31             // 实例 Schedule 调度器
32             Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
33             // 添加调度
34             scheduler.scheduleJob(job, trigger);
35             // 启动
36             scheduler.start();
37             
38         } catch (Exception e) {
39             e.printStackTrace();
40         }
41     }
42 }

2.3、结果

 

原文地址:https://www.cnblogs.com/duniang/p/8797101.html