1.初识Quartz

开发工具:STS

代码下载链接:https://github.com/theIndoorTrain/QuartzDemo.git

前言:

接触一个新事物的开始,我们都会产生一些疑问:

Quartz是什么?

Quartz是用来做什么的?

答:

Quartz是一个任务调度框架。说明白点,就是定制任务的。

例如:

每年你过生日时给你发一张生日贺卡;

每周一的6:00给你发一条起床提醒;

每月的15号给你发工资.......

明白了quartz的原理,我们就来进入我们的学习。


 

项目搭建

1.新建maven项目

2.导入quartz相关依赖

1                 <!-- 添加quartz依赖 -->
2         <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
3         <dependency>
4             <groupId>org.quartz-scheduler</groupId>
5             <artifactId>quartz</artifactId>
6             <version>2.3.0</version>
7         </dependency>

任务一:

每隔五秒打印一句“Hello world!”;

1.新建一个Job类实现Job接口:

实现:打印系统时间,输出“Hello world!”

 1 package com.xm.job;
 2 
 3 import java.text.SimpleDateFormat;
 4 import java.util.Date;
 5 
 6 import org.quartz.Job;
 7 import org.quartz.JobExecutionContext;
 8 import org.quartz.JobExecutionException;
 9 
10 public class HelloJob implements Job{
11 
12 
13     public void execute(JobExecutionContext context) throws JobExecutionException {
14         Date date = new Date();
15         SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
16         System.out.println("Job start time: "+sf.format(date));
17         System.out.println("Hello world!");
18     }
19 
20 }

2.定义一个Scheduler类:

实现:

(1)定义一个JobDetail,绑定Job

(2)定义一个Trigger,定义任务细节

(3)定义一个Scheduler,绑定JobDetail和Trigger

 1 package com.xm.scheduler;
 2 
 3 import org.quartz.JobBuilder;
 4 import org.quartz.JobDetail;
 5 import org.quartz.Scheduler;
 6 import org.quartz.SchedulerException;
 7 import org.quartz.SchedulerFactory;
 8 import org.quartz.SimpleScheduleBuilder;
 9 import org.quartz.Trigger;
10 import org.quartz.TriggerBuilder;
11 import org.quartz.impl.StdSchedulerFactory;
12 
13 import com.xm.job.HelloJob;
14 
15 public class HelloScheduler {
16 
17     public static void main(String[] args) throws SchedulerException {
18         /**
19          * 1.定义一个JobDetail
20          *2.绑定 HelloJob
21          *3.定义id,group
22          */
23         JobDetail jobDetail = JobBuilder
24                 .newJob(HelloJob.class)
25                 .withIdentity("job1", "group1")
26                 .build();
27         
28         /**
29          * 1.定义一个trigger
30          * 2.绑定group,name
31          * 3.指定开始、结束时间
32          * 4.定义任务细节
33          */
34         Trigger trigger = TriggerBuilder
35                 .newTrigger()
36                 //绑定group,name
37                 .withIdentity("trigger1", "group1")
38                 //从现在开始执行
39                 .startNow()
40                 //指定开始执行时间
41                 //.startAt()
42                 //指定结束执行时间
43                 //.endAt()
44                 .withSchedule(
45                         SimpleScheduleBuilder.simpleSchedule()
46                             //执行间隔时间
47                             .withIntervalInSeconds(5)
48                             //重复执行
49                             .repeatForever()
50                 )
51                 .build();
52         
53         /**
54          * 1.定义一个SchedulerFactory工厂类
55          * 2.获得一个Scheduler类
56          * 3.启动Scheduler
57          * 4.绑定JobDetail和Trigger
58          */
59         //定义一个SchedulerFactory工厂类
60         SchedulerFactory  factory = new StdSchedulerFactory() ;
61         //获得一个Scheduler类
62         Scheduler scheduler = factory.getScheduler();
63         //启动Scheduler
64         scheduler.start();
65         //绑定JobDetail和Trigger
66         scheduler.scheduleJob(jobDetail, trigger);    
67         
68     }
69 
70 }

3.运行结果:

4.代码下载链接:https://github.com/theIndoorTrain/QuartzDemo/tree/f00db42b1eee7043179d129a6be79d6ad2a0c99f


任务二:

每隔五秒打印一句“Hello world!”,5s后开始,30秒后结束

1.修改Scheduler:

 1 package com.xm.scheduler;
 2 
 3 import java.text.SimpleDateFormat;
 4 import java.util.Date;
 5 
 6 import org.quartz.JobBuilder;
 7 import org.quartz.JobDetail;
 8 import org.quartz.Scheduler;
 9 import org.quartz.SchedulerException;
10 import org.quartz.SchedulerFactory;
11 import org.quartz.SimpleScheduleBuilder;
12 import org.quartz.Trigger;
13 import org.quartz.TriggerBuilder;
14 import org.quartz.impl.StdSchedulerFactory;
15 
16 import com.xm.job.HelloJob;
17 
18 public class HelloScheduler {
19 
20     public static void main(String[] args) throws SchedulerException {
21         /**
22          * 1.定义一个JobDetail
23          *2.绑定 HelloJob
24          *3.定义id,group
25          */
26         JobDetail jobDetail = JobBuilder
27                 .newJob(HelloJob.class)
28                 .withIdentity("job1", "group1")
29                 .build();
30         
31         /**
32          * 1.获取系统时间
33          * 2.定义开始时间
34          * 3.定义结束时间
35          */
36         SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
37         Date nowTime = new Date();
38         System.out.println("Now Time:"+sf.format(nowTime));
39         Date startTime = new Date(nowTime.getTime()+5000);
40         System.out.println("Start Time:"+sf.format(startTime));
41         Date endTime = new Date(nowTime.getTime()+30000);
42         System.out.println("End Time:"+sf.format(endTime));
43         
44         /**
45          * 1.定义一个trigger
46          * 2.绑定group,name
47          * 3.指定开始、结束时间
48          * 4.定义任务细节
49          */
50         Trigger trigger = TriggerBuilder
51                 .newTrigger()
52                 //绑定group,name
53                 .withIdentity("trigger1", "group1")
54                 //从现在开始执行
55                 //.startNow()
56                 //指定开始执行时间
57                 .startAt(startTime)
58                 //指定结束执行时间
59                 .endAt(endTime)
60                 .withSchedule(
61                         SimpleScheduleBuilder.simpleSchedule()
62                             //执行间隔时间
63                             .withIntervalInSeconds(5)
64                             //重复执行
65                             .repeatForever()
66                 )
67                 .build();
68         
69         /**
70          * 1.定义一个SchedulerFactory工厂类
71          * 2.获得一个Scheduler类
72          * 3.启动Scheduler
73          * 4.绑定JobDetail和Trigger
74          */
75         //定义一个SchedulerFactory工厂类
76         SchedulerFactory  factory = new StdSchedulerFactory() ;
77         //获得一个Scheduler类
78         Scheduler scheduler = factory.getScheduler();
79         //启动Scheduler
80         scheduler.start();
81         //绑定JobDetail和Trigger
82         scheduler.scheduleJob(jobDetail, trigger);    
83         
84     }
85 
86 }

 

2.运行结果:

3.代码下载链接:https://github.com/theIndoorTrain/QuartzDemo/tree/95b0d2fff333ea1bfb1ce45fef86a8ef3f985133


                                                                2018-07-14

posted @ 2018-07-14 09:38  零度微笑  阅读(411)  评论(0编辑  收藏  举报