Quartz2 定时器 《一》(概述)

为什么80%的码农都做不了架构师?>>>   hot3.png

Quartz2 
     说白了,就是个功能比较完善的定时器,可以通过指定的时间执行指定的任务。

 

应用范围

    a.比如让商城的活动(对象)在指定的时间(定时)从发布变为激活

    b.比如平台每天2:00去给用户发送通知。

    c.本来指定商城每天2:00发通知,但是碰到了星期天(触发器)改为1:00发通知

    定时器的应用范围其实很广,上面只是简单举了几个例子。

 

准备

    资源下载地址:http://www.quartz-scheduler.org/

    <dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.2.1</version></dependency><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz-jobs</artifactId><version>2.2.1</version></dependency>

    如上在pom.xml加入要引入的jar包

 

Quartz中的设计模式

  1. Builder模式

    1. 所有关键组件都有Builder模式来构建  <Builder> 如:JobBuilder、TriggerBuilder

  2. Factory模式

    1. 最终由Scheduler的来进行组合各种组件  <Factory> 如SchedulerFactory

  3. Quartz项目中大量使用组件模式,插件式设计,可插拔,耦合性低,易扩展,开发者可自行定义自己的Job、Trigger等组件

  4. 链式写法,Quartz中大量使用链式写法,与jQuery的写法有几分相似,实现也比较简单,如:

    1.  $(this).addClass("divCurrColor").next(".divContent").css("display","block");  

    2. newTrigger().withIdentity( "trigger3""group1").startAt( startTime)

              .withSchedule(simpleSchedule().withIntervalInSeconds(10).withRepeatCount(10)).build();

 

框架核心分析

 

  1. SchedulerFactory    -- 调度程序工厂

    1. ThreadExecutor / DefaultThreadExecutor   -- 内部线程操作对象

    2. StdSchedulerFactory   -- Quartz默认的SchedulerFactory

    3. DirectSchedulerFactory  --   DirectSchedulerFactory是对SchedulerFactory的直接实现,通过它可以直接构建Scheduler、threadpool 

  2. JobExecutionContext -- JOB上下文,保存着Trigger、 JobDeaitl 等信息,JOB的execute方法传递的参数就是对象的实例

    1. JobExecutionContextImpl

  3. Scheduler    -- 调度器

    1. StdScheduler    -- Quartz默认的Scheduler

    2. RemoteScheduler  -- 带有RMI功能的Scheduler

  4. JOB --任务对象

    1. JobDetail  -- 他是实现轮询的一个的回调类,可将参数封装成JobDataMap对象,Quartz将任务的作业状态保存在JobDetail中.

    2. JobDataMap --  JobDataMap用来报错由JobDetail传递过来的任务实例对象

  5. Trigger

    1. SimpleTrigger <普通的Trigger> --  SimpleScheduleBuilder

    2. CronTrigger  <带Cron Like 表达式的Trigger> -- CronScheduleBuilder

    3. CalendarIntervalTrigger <带日期触发的Trigger> -- CalendarIntervalScheduleBuilder

    4. DailyTimeIntervalTrigger <按天触发的Trigger> -- DailyTimeIntervalScheduleBuilder

  6. ThreadPool  --  为Quartz运行任务时提供了一些线程

    1. SimpleThreadPool  --一个Quartz默认实现的简单线程池,它足够健壮,能够应对大部分常用场景

实现思想:

// 1、工厂模式 构建Scheduler的Factory,其中STD为Quartz默认的Factory  
//    开发者亦可自行实现自己的Factory;Job、Trigger等组件  SchedulerFactory sf = new StdSchedulerFactory();  // 2、通过SchedulerFactory构建Scheduler对象  Scheduler sched = sf.getScheduler();  // 3、org.quartz.DateBuilder.evenMinuteDate  -- 通过DateBuilder构建Date  Date runTime = evenMinuteDate( new Date());  // 4、org.quartz.JobBuilder.newJob <下一分钟> --通过JobBuilder构建Job  JobDetail job = newJob(HelloJob.class).withIdentity("job1","group1").build();  //这里指定的HelloJob.class是job1的实现// 5、通过TriggerBuilder进行构建Trigger  
Trigger trigger = newTrigger().withIdentity("trigger1","group1")  .startAt(runTime).build();  // 6、工厂模式,组装各个组件<JOB,Trigger> ---   表示创建sched.scheduleJob (job, trigger);  // 7、start   
sched.start();  try {  Thread.sleep(65L * 1000L);  
} catch (Exception e) {  
}  // 8、通过Scheduler销毁内置的Trigger和Job  
sched.shutdown(true);

 

一句话实现:

   1、创建调度工厂();    //工厂模式

   2、根据工厂取得调度器实例();  //工厂模式

   3、Builder模式构建子组件<Job,Trigger>  // builder模式, 如JobBuilder、TriggerBuilder、DateBuilder

   4、通过调度器组装子组件   调度器.组装<子组件1,子组件2...>  //工厂模式

   5、调度器.start(); //工厂模式

**************************************************************************************************

********来源:http://blog.csdn.net/chenweitang123/article/details/37777399**********

**************************************************************************************************

 

转载于:https://my.oschina.net/gxiao/blog/551168

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/286142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL 数据库远程备份 语句

DECLARE DATABakPath VARCHAR(200) N\\192.168.0.22\DataBak --远程共享目录&#xff08;备份文件夹根目录&#xff09; DECLARE UserName VARCHAR(50) N192.168.0.22\dbuser --远程目录访问用户账户 DECLARE UserPwd VARCHAR(50) N123456 --远程目录访问用户密码 DECLARE R…

九、为影院添加影片《仿淘票票系统前后端完全制作(除支付外)》

一、数据获取 首先打开在线编辑器进入我们的项目&#xff1a;https://editor.ivx.cn/ 上一节已展示了影院页&#xff0c;但是你点击影院页进入后将看不到任何数据&#xff0c;这是因为当前影院还未有添加的影片&#xff0c;本节之后将会从页面开始完成这个功能。 首先我们应…

大话领域驱动设计——基础设施层

概述基础设施层是整个系统的⽀持层&#xff0c;通过对第三⽅类库的调⽤或系统的抽象和集成来实现对其他层的⽀持。与传统架构不同在DDD中&#xff0c;数据库访问的具体实现&#xff08;仓储&#xff09;也被放在了基础设施层。在DDD的理念中&#xff0c;基础设施层是为领域和用…

C语言试题四十四之移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 请编写一个…

【MATLAB统计分析与应用100例】案例004:matlab调用smoothts函数对金融时间序列数据进行平滑处理

时间序列数据进行平滑处理效果预览: Excel原数据部分预览: 1. 读取金融时间序列数据,绘制波形图 x = xlsread(examp03_02.xls); % 从文件examp03_02.xls中读取数据 price = x(:,4)

javaweb优化

http://blog.csdn.net/jiangzhaobao/article/details/8003244转载于:https://www.cnblogs.com/yzjT-mac/p/5889292.html

MultiProcess-MultiThread

听到一些关于python多进程与多线的例子&#xff0c;感觉比较经典&#xff0c;把一些例子分享一下. 内容如下&#xff1a; Process、Thread、GIL、Process fork、Multiprocessing、Queue、ProcessPool、Multiprocess-Multithread comparison (1) Process : 程序的一次执行(程序编…

【MATLAB统计分析与应用100例】案例005:matlab调用medfilt1函数对加噪正弦波信号进行平滑处理

平滑效果预览: 文章目录 1. 产生加噪正弦波信号,绘制加噪波形图2. 调用medfilt1对加噪正弦波信号y进行中值滤波,并绘制波形图1. 产生加噪正弦波信号,绘制加噪波形图 t = linspace(0,2*pi,500); % 产生一个从0到2

十、为影院添加影片及座位安排《仿淘票票系统前后端完全制作(除支付外)》

一、选中添加功能完成 首先打开在线编辑器进入我们的项目&#xff1a;https://editor.ivx.cn/ 在上一节咱们已经完成了对应的准备工作&#xff0c;在这一节中&#xff0c;咱们只需要对其进行调用即可&#xff0c;调用前还需要处理这些数据&#xff1a; 首先选中时&#xff0…

遍历文件夹还原数据库SQL语句

/***** 遍历文件夹进行数据库还原 *******/---需要开启xp_cmdshell 如已经开启 可以略过 /***** Step 1 开启 xp_cmdshell Use Master GO EXEC master.dbo.sp_configure show advanced options, 1 RECONFIGURE WITH OVERRIDE GO EXEC master.dbo.sp_configure xp_cmdshell, 1…

聊聊 C# 和 C++ 中的 泛型模板 底层玩法

最近在看 C 的方法和类模板&#xff0c;我就在想 C# 中也是有这个概念的&#xff0c;不过叫法不一样&#xff0c;人家叫模板&#xff0c;我们叫泛型&#xff0c;哈哈&#xff0c;有点意思&#xff0c;这一篇我们来聊聊它们底层是怎么玩的&#xff1f;一&#xff1a;C 中的模板玩…

ceph集群报 Monitor clock skew detected 错误问题排查,解决

ceph集群报 Monitor clock skew detected 错误问题排查&#xff0c;解决 告警信息如下&#xff1a; [rootceph-100-80 ceph]# ceph -w cluster ddc1b10b-6d1a-4ef9-8a01-d561512f3c1d health HEALTH_WARN clock skew detected on mon.ceph-100-81,…

Java实现画八卦

八卦是由多个圆叠加而成&#xff0c;如果我们让每个圆都有自己的颜色&#xff0c;那么具体结构便一目了然&#xff0c;如下图所示&#xff1a; 显然只要令对应的圆颜色相同&#xff0c;就能达到我们预期的效果。 用Java就能轻松画出来&#xff1a; import java.awt.BasicStroke…

C语言试题四十五之把第1到第p个字符,平移到字符串的最后,把第p+1到最后的字符移到字符串的前部。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 请编写一个…

【MATLAB统计分析与应用100例】案例006:matlab数据的标准化变换

文章目录 1. 调用rand函数产生一个10行,4列的随机矩阵,每列服从不同的均匀分布2. 调用zscore函数对x进行标准化变换(按列标准化),返回变换后矩阵xz,以及矩阵x各列的均值构成的向量mu,各列的标准差构成的向量sigma3. 变换结果1. 调用rand函数产生一个10行,4列的随机矩阵…

十一、为影院添加影片制作准备服务《仿淘票票系统前后端完全制作(除支付外)》

一、为影院添加影片的逻辑和思考 首先打开在线编辑器进入我们的项目&#xff1a;https://editor.ivx.cn/ 进入之后找到上一节中制作的页面&#xff0c;咱们设置点击编辑按钮后进入的页面为影院添加影片页&#xff1a; 接着咱们查看影院添加影片页&#xff1a; 在该页中&…

Linux 内核中断内幕【转】

转自:http://www.ibm.com/developerworks/cn/linux/l-cn-linuxkernelint/ 本文对中断系统进行了全面的分析与探讨&#xff0c;主要包括中断控制器、中断分类、中断亲和力、中断线程化与 SMP 中的中断迁徙等。首先对中断工作原理进行了简要分析&#xff0c;接着详细探讨了中断亲…

SQL Server表分区

SQL Server表分区 什么是表分区 一般情况下&#xff0c;我们建立数据库表时&#xff0c;表数据都存放在一个文件里。 但是如果是分区表的话&#xff0c;表数据就会按照你指定的规则分放到不同的文件里&#xff0c;把一个大的数据文件拆分为多个小文件&#xff0c;还可以把这…

apt 根据注解,编译时生成代码

apt&#xff1a; Retention后面的值&#xff0c;设置的为CLASS&#xff0c;说明就是编译时动态处理的。一般这类注解会在编译的时候&#xff0c;根据注解标识&#xff0c;动态生成一些类或者生成一些xml都可以&#xff0c;在运行时期&#xff0c;这类注解是没有的~~会依靠动态生…

Web.config配置文件详解(新手必看)

花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法。很适合新手参看&#xff0c;由于Web.config在使用很灵活&#xff0c;可以自定义一些节点。所以这里只介绍一些比较常用的节点。 <?xml version"1.0"?> <!--注意: 除了手动编辑此文件以外&…