zoukankan      html  css  js  c++  java
  • 初始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
  • 相关阅读:
    NHibernate中的Clear和Flush方法
    什么是POCO类
    node-vuecli 脚手架安装
    layui表单引入ueditor遇坑记
    PHP的九个超全局变量
    PHP的八个魔术常量
    PHP的七个数组指针函数
    TP6.0多应用模式隐藏路由中的应用名
    TP6.0中的密码验证逻辑、验证器的使用
    Vue 侦听器 watch
  • 原文地址:https://www.cnblogs.com/taobd/p/6939295.html
Copyright © 2011-2022 走看看