quartz入门(一)(hello world!!!)

相关概念:
    Scheduler - 与调度程序交互的主要API。
    Job - 执行的任务需要实现的接口(任务模板)
    JobDetail - 用于定义任务属性(任务实例)
    Trigger - 用于触发定义任务的如何触发(触发器)
    JobBuilder - 用于构建JobDetail实例(常用静态导入)
    TriggerBuilder - 用于构建触发器实例(常用静态导入)
所需jar包获取地址

一.创建简单job类(实现org.quartz.Job接口,重写execute方法即可):
Hello.java
二.任务实例创建和调度过程:
静态导入准备

相关步骤:
     1.获取调度器
     2.定义jobDetail实例并与HelloJob关联
     3.创建trigger(定义job触发方式)
     4.告诉Quartz使用我们定义的触发器来调度job实例
     5.启动调度程序(触发器等在调度程序启动后才能真正运行)


任务调度准备过程

详细过程:


创建调度工厂并获取调度器

定义任务细节并将其关联到实际HelloJob

定义任务触发方式,与实际job关联,并trigger对象

告诉Quartz使用我们的触发器来调度job:
scheduler.scheduleJob(job,trigger);

启动调度(触发器等在调度程序启动后才能真正运行):

scheduler.start();

实际调度过程:


运行结果:



调度完整代码:

/**
 * Copyright (C), 2015-2018, Nxin
 * FileName: SimpleTest1
 * Author:   xff
 * Date:     2018/5/26 11:04
 * Description: HelloJob简单调度
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
package com.feifei.test1;

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
import java.util.concurrent.TimeUnit;

/**
 * 使用静态导入维持代码的简洁性
 */
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import static org.quartz.DateBuilder.evenMinuteDate;
/**
 * 〈一句话功能简述〉<br> 
 * 〈HelloJob简单调度〉
 *
 * @author xff
 * @create 2018/5/26
 * @since 1.0.0
 */
public class SimpleTest1 {

    /*
    创建调度工厂,并获取调度器
     */
    public static Scheduler getScheduler() throws SchedulerException {
        SchedulerFactory schedulerFactory=new StdSchedulerFactory();
        return schedulerFactory.getScheduler();
    }

    /**
     * 定义任务细节并将其关联到实际的Job类
     */
    public static JobDetail defineJobDetailAndTieToRealJobClass(){
        JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();
        return job;
    }

    /**
     * 定义并获取trigger
     * @param runTime 触发开始时间
     * @return
     */
    public static Trigger getTrigger(Date runTime){
        Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build();
        return trigger;
    }
    public void run() throws SchedulerException {
        Logger  logger= LoggerFactory.getLogger(SimpleTest1.class);
        //1.获取调度器
        Scheduler scheduler=getScheduler();
        //2.定义job并与实际jobClass关联
        JobDetail job= defineJobDetailAndTieToRealJobClass();
        //3.创建Trigger
        Date runTime=evenMinuteDate(new Date());
        Trigger trigger=getTrigger(runTime);
        //4.告诉Quartz使用我们的触发器来调度job
        scheduler.scheduleJob(job,trigger);
        //5.启动调度
        scheduler.start();

        try {
            logger.info("睡眠65s等待任务执行...");
            TimeUnit.SECONDS.sleep(75);
        } catch (InterruptedException e) {
            logger.error(e.getMessage());
        }
    }
    public static void main(String[] args) throws SchedulerException {
        new SimpleTest1().run();
    }
}

HelloJob完整代码:

/**
* Copyright (C), 2015-2018, Nxin
* FileName: HelloJob
* Author:   xff
* Date:     2018/5/26 11:00
* Description: 一个输出helllo world的简单job
* History:
* <author>          <time>          <version>          <desc>
* 作者姓名           修改时间           版本号              描述
*/
package com.feifei.test1;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* 〈一句话功能简述〉<br> 
* 〈一个输出helllo world的简单job〉
*
* @author xff
* @create 2018/5/26
* @since 1.0.0
*/
public class HelloJob implements Job{
   private static Logger logger = LoggerFactory.getLogger(HelloJob.class);
   @Override
   public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
       logger.info("hello world!!!");
   }
}

未完待续...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 概述 了解Quartz体系结构 Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个...
    张晨辉Allen阅读 2,215评论 2 11
  • Quartz是一个完全由java编写的功能丰富的开源作业调度库,可以集成到几乎任何Java应用程序中,小到独立应用...
    ProteanBear阅读 6,998评论 3 24
  • 导语:作为java领域最受欢迎的任务调度库之一,quartz为开发者提供了丰富的任务调度功能,比如让某段程序在每天...
    star24阅读 23,730评论 8 60
  • 什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的执行次数自动完成执行任务 在Java中的定时调度工具...
    Hey_Shaw阅读 2,483评论 2 1
  • 假期到了。爸爸说今天带你们去大泽山玩,我高兴极了。爸爸开车半个小时到了,在我们面前是又高又宽的一块石头,上面写着《...
    孙浩琳阅读 1,026评论 0 0