文章目录

  • 1.什么是Quartz
  • Quartz的组成
    • 调度器:Scheduler
    • 任务:JobDetail
    • 触发器:Trigger
  • 3.Quartz Demo搭建
  • 4.Quartz核心详解
    • Quartz框架中的几个重要参数:
      • (1)Job和JobDetail
      • (2)JobExecutionContext

1.什么是Quartz

Quartz是OpenSymphony开源组织在Job
scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。但是相较于Timer,
Quartz增加了很多功能:

持久性作业 - 就是保持调度定时的状态; 作业管理 - 对调度作业进行有效的管理;

Quartz的组成

Quartz的基本组成部分:

  • 调度器:Scheduler
  • 任务:JobDetail
  • 触发器:Trigger,包括SimpleTrigger和CronTrigger

调度器:Scheduler

来负责Job和Trigger结合这个功能的实现。

任务:JobDetail

首先我们需要定义实现一个定时功能的接口,我们可以称之为Task(或Job),如定时发送邮件的task(Job),重启机器的task(Job),优惠券到期发送短信提醒的task(Job)

触发器:Trigger

有了任务之后,还需要一个能够实现触发任务去执行的触发器,触发器Trigger最基本的功能是指定Job的执行时间,执行间隔,运行次数等。

3.Quartz Demo搭建

1、导入依赖的jar包:

<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.0</version>
</dependency>

2、新建一个能够打印任意内容的Job:

/*** Created by wanggenshen* Date: on 2018/7/7 16:28.* Description: 打印任意内容*/
public class PrintWordsJob implements Job{@Overridepublic void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {String printTime = new SimpleDateFormat("yy-MM-dd HH-mm-ss").format(new Date());System.out.println("PrintWordsJob start at:" + printTime + ", prints: Hello Job-" + new Random().nextInt(100));}
}

3、创建Schedule,执行任务:

/*** Created by wanggenshen* Date: on 2018/7/7 16:31.* Description: XXX*/
public class MyScheduler {public static void main(String[] args) throws SchedulerException, InterruptedException {// 1、创建调度器SchedulerSchedulerFactory schedulerFactory = new StdSchedulerFactory();Scheduler scheduler = schedulerFactory.getScheduler();// 2、创建JobDetail实例,并与PrintWordsJob类绑定(Job执行内容)JobDetail jobDetail = JobBuilder.newJob(PrintWordsJob.class).withIdentity("job1", "group1").build();// 3、构建Trigger实例,每隔1s执行一次Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "triggerGroup1").startNow()//立即生效.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(1)//每隔1s执行一次.repeatForever()).build();//一直执行//4、执行scheduler.scheduleJob(jobDetail, trigger);System.out.println("--------scheduler start ! ------------");scheduler.start();//睡眠TimeUnit.MINUTES.sleep(1);scheduler.shutdown();System.out.println("--------scheduler shutdown ! ------------");}
}

4.Quartz核心详解

Quartz框架中的几个重要参数:

  • Job和JobDetail
  • JobExecutionContext
  • JobDataMap
  • Trigger、SimpleTrigger、CronTrigger

(1)Job和JobDetail

Job是Quartz中的一个接口,接口下只有execute方法,在这个方法中编写业务逻辑。
JobDetail用来绑定Job,为Job实例提供许多属性:

  • name
  • group
  • jobClass
  • jobDataMap

JobDetail绑定指定的Job,每次Scheduler调度执行一个Job的时候,首先会拿到对应的Job,然后创建该Job实例,再去执行Job中的execute()的内容,任务执行结束后,关联的Job对象实例会被释放,且会被JVM GC清除。

(2)JobExecutionContext

JobExecutionContext中包含了Quartz运行时的环境以及Job本身的详细数据信息。
当Schedule调度执行一个Job的时候,就会将JobExecutionContext传递给该Job的execute()中,Job就可以通过JobExecutionContext对象获取信息。

quartz定时任务框架相关推荐

  1. Quartz定时任务框架(二)

    1. Quartz的体系结构 2. Quartz的核心API 2.1. Job 2.2. JobDetail 2..3. Trigger 2.3.1. SimpleTrigger简单触发器 2.3.2 ...

  2. Quartz定时任务框架使用总结

    Quartz可以用来做什么? Quartz是一个任务调度框架.比如你遇到这样的问题 想每月25号,信用卡自动还款 想每年4月1日自己给当年暗恋女神发一封匿名贺卡 想每隔1小时,备份一下自己的爱情动作片 ...

  3. Spring集成Quartz定时任务框架介绍

    一.增加所依赖的JAR包 1.增加Spring的Maven依赖 <dependency> <groupId>org.springframework</groupId> ...

  4. 墨客网java_墨客网-知识拆解+经典定时任务案例 精讲Java定时任务框架Elastic-Job和Quartz...

    课程介绍 精讲Elastic-job + Quartz实现企业级定时任务 掌握分布式集群方式的定时任务框架,可以弥补企业中常用的单点任务的缺点,以更高的性能更好的稳定性处理分布式定时任务服务:本课程带 ...

  5. 全云化架构(十一):分布式定时任务框架对比

    分布式定时任务框架对比 把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式.叫做分布式定时任务. 常见的分布式定时任务平台有elastic-job , ...

  6. Quartz学习总结(2)——定时任务框架Quartz详解

    一.概述 Quartz是OpenSymphony开源组织的一个开源项目,定时任务框架,纯Java语言实现,最新版本为2.3.0. Quartz中用到的设计模式:Builder模式.Factory模式. ...

  7. 定时任务框架Quartz

    在Spring Boot 中要实现定时任务,有两中方案,一种是使用 Spring 自带的定时任务处理器 @Scheduled 注解,另一种就是使用Quartz. 1.Scheduled 这种用法非常简 ...

  8. 详细总结:分布式, Nginx Linux Redis 微服务 Dubbo框架 Quartz定时任务

    目录 1.1 概念 2.1分布式概念 2.2分布式项目拆分 2.3分布式项目总结 2.3 分布式事务 3.1 Nginx配置文件介绍 3.2 实现负载均衡(Tomcat高可用) 3.3 常见面试题 4 ...

  9. quartz 每月一次_Quartz 定时任务框架详解

    1.Quartz 体系结构 Quartz 设计有四个核心类,分别是Scheduler(调度器).Job(任务) .Trigger(触发器).JobDetail(任务详情),他们是使用Quartz的关键 ...

  10. 5分钟快速掌握 Python 定时任务框架

    APScheduler 简介 在实际开发中我们经常会碰上一些重复性或周期性的任务,比如像每天定时爬取某个网站的数据.一定周期定时运行代码训练模型等,类似这类的任务通常需要我们手动来进行设定或调度,以便 ...

最新文章

  1. 直播报名 | 基金业数字化运营指标体系建设
  2. 虚机大比拼之HYPER-V
  3. 【Qt5.8】TypeError: Property 'asciify' of object Core问题解决办法
  4. MyEclipse中消除frame引起的“the file XXX can not be found.Please check the location and try again.”的错误...
  5. java面试中jvm执行子系统详细分析(三)
  6. 进程间通信————无名管道
  7. 为Sublime Text 3的C++编译器(g++)添加C++11标准的方法
  8. windows远程禁止登陆
  9. 设置java路径_关于java路径设置
  10. python定义函数的组成部分有_Python学习笔记之函数的定义和作用域实例详解
  11. 2017级面向对象程序设计——团队作业2
  12. [Avalon]如何实现自定义MarkupExtension.
  13. 20170908在线编程之圆周上问两点间的距离问题
  14. 【Verilog HDL】2. 4选1数据选择器
  15. ncm转MP3的工具
  16. 安卓软件改名器_安卓歌词适配V3.9.5 无损音乐下载器(软件篇)
  17. 《电子懒人的基础硬件电路图讲解》68例电路总结
  18. Docker部署ssm项目
  19. MATLAB实现一组随机点分成两组,每组随机点分别与一个特定点连线
  20. android 接电话 返回后黑屏,安卓手机打电话黑屏怎么办?解决安卓接电话黑屏

热门文章

  1. 高铁线路开通数据(更新至2021年10月)
  2. 系列学习 Swagger 之第 2 篇 —— SpringCloud Gateway 整合 Swagger(完结)
  3. 从0到一开发微信小程序(4)—小程序组件
  4. Premiere 2020安装及Premiere缺失字体处理
  5. Utils 前端随机生成id,中文姓名
  6. 可信计算理论与技术--远程证明技术
  7. 教你屏蔽CSDN广告
  8. 上海电力大学本科毕业论文答辩PPT模板
  9. OnlyOffice在线部署
  10. 计算机中级《软件设计师》考试分析