• 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

  • 相关阅读:
    排序算法之冒泡排序的思想以及Java实现
    排序算法之希尔排序的思想以及Java实现
    c# npoi分批往excel追加数据
    c# Timer按月执行任务
    windows服务+定时任务(quartz.net)+nancy
    c# linq分组 lambda分组
    批量插入sql技巧
    解决windows server 2008R2自动关机
    c# DataGridView在使用DataSource时,只显示指定的列或禁止自动生成列
    c# mongodb时间类型字段保存时相差八个小时解决办法
  • 原文地址:https://www.cnblogs.com/TimerHotel/p/quartz01.html
Copyright © 2020-2023  润新知