初始Quartz框架

1.任务

  任务就是执行工作的内容,Quartz提供Job接口来支持任务定义,JobDetail类是Job接口的实现类

2.触发器

  在Quartz中,触发器Trigger类允许定义触发Job执行的时间触发规则,Trigger有两个实现类,分别为SimpleTrigger和CronTrigger;

  SimpleTrigger主要用于固定时间间隔的调任任务,通过设置触发器的属性:开始时间,结束时间,重复次数,重复间隔等.

  CronTrigger主要用于指定时间点的调度任务,通过定义Cron表达式,例: 0 0/5 15,17 * * ? 的含义是每天的15:00-16:00每5分钟运行一次,此外每天的17:00-18:00每5分钟运行一次

  Cron表达式从左往右的顺序为  秒 分 时 日 月 星期 年 ,其中年可以省略

3.调度器

  Quartz提供了调度器Scheduler类,它是Quartz独立运行的容器,Scheduler可以将Trigger绑定到一个JobDetail上,当Trigger被触发后,一个Job就会被执行了.

下面是简单的示例代码:

 1 package cn.bd.quartz;
 2 
 3 /**
 4  *  计划实体类
 5  * @author Administrator
 6  *
 7  */
 8 public class Plan {
 9     private String date;
10     private String task;
11     
12     
13     public Plan(String date, String task) {
14         super();
15         this.date = date;
16         this.task = task;
17     }
18 
19 
20     public String getDate() {
21         return date;
22     }
23 
24 
25     public void setDate(String date) {
26         this.date = date;
27     }
28 
29 
30     public String getTask() {
31         return task;
32     }
33 
34 
35     public void setTask(String task) {
36         this.task = task;
37     }
38 
39 
40     @Override
41     public String toString() {
42         return this.date+":"+this.task;
43     }
44 }
View Code
 1 package cn.bd.quartz;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 /**
 7  * 提醒服务类
 8  * @author Administrator
 9  *
10  */
11 public class RemindService {
12     private String userName;
13     public void setUserName(String userName) {
14         this.userName = userName;
15     }
16     
17     public void ouputPlan(String userName){
18         List<Plan> plansForToday=getPlansForToday(userName);
19         System.out.println(userName+"的提醒信息:
");
20         for(Plan plan : plansForToday){
21             System.out.println(plan+"
");
22         }
23     }
24 
25     private List<Plan> getPlansForToday(String userName) {
26         List<Plan> list=new ArrayList<Plan>();
27         list.add(new Plan("2016-9-9 9:00","研讨会 | 地点 | 会议室Co1"));
28         list.add(new Plan("2016-9-9 9:00","汇报 | 地点 | 总裁办公室"));
29         return list;
30     }
31 }
View Code
 1 package cn.bd.quartz;
 2 
 3 import org.quartz.Job;
 4 import org.quartz.JobExecutionContext;
 5 import org.quartz.JobExecutionException;
 6 
 7 /**
 8  * 提醒任务类
 9  * @author Administrator
10  *
11  */
12 public class RemindJob implements Job{
13     public RemindJob(){
14     }
15     private RemindService remindService;
16     
17     @Override
18     public void execute(JobExecutionContext jobContext) throws JobExecutionException {
19         remindService =new RemindService();
20         remindService.ouputPlan("张三");
21     }
22 
23     
24 
25 }
View Code
 1 package cn.bd.quartz.test;
 2 
 3 import java.text.ParseException;
 4 import java.util.Date;
 5 
 6 import org.quartz.CronTrigger;
 7 import org.quartz.JobDetail;
 8 import org.quartz.Scheduler;
 9 import org.quartz.SchedulerException;
10 import org.quartz.SchedulerFactory;
11 import org.quartz.SimpleTrigger;
12 import org.quartz.impl.StdSchedulerFactory;
13 
14 import cn.bd.quartz.RemindJob;
15 
16 public class TestJob {
17     public void doRemind() throws SchedulerException, InterruptedException, ParseException{
18         //创建一个任务
19         JobDetail job=new JobDetail("remindJob","group1",RemindJob.class);
20         
21         //创建一个触发器
22         /*SimpleTrigger simTrig=new SimpleTrigger("trigRemindJob",SimpleTrigger.REPEAT_INDEFINITELY,3000);*/
23         /*simTrig.setStartTime(new Date(System.currentTimeMillis()+1000));*/
24         CronTrigger simTrig=new CronTrigger("remindJob","group1","1/3 * * * * ?");
25         
26         //创建一个调度者
27         SchedulerFactory sfc=new StdSchedulerFactory();
28         Scheduler sched=sfc.getScheduler();
29         //注册并进行调度
30         sched.scheduleJob(job,simTrig);
31         sched.start();
32         Thread.sleep(10000);
33         sched.shutdown();
34     }
35     
36     public static void main(String[] args) throws SchedulerException, InterruptedException, ParseException {
37         new TestJob().doRemind();
38     }
39 }
View Code
原文地址:https://www.cnblogs.com/taobd/p/6939295.html