zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HDU2027 统计元音 一点点哈希思想
    湖南工业大学第一届ACM竞赛 数字游戏 字符串处理
    湖南工业大学第一届ACM竞赛 我素故我在 DFS
    HDU3293sort
    HDU2082 找单词 母函数
    HDU1018 Big Number 斯特林公式
    湖南工业大学第一届ACM竞赛 分糖果 位操作
    UVA 357 Let Me Count The Ways
    UVA 147 Dollars
    UVA 348 Optimal Array Multiplication Sequence
  • 原文地址:https://www.cnblogs.com/TimerHotel/p/quartz01.html
Copyright © 2011-2022 走看看