- 转载
- 什么是Quartz
- Quartz是一个开源的作业调度框架,由java编写,在.NET平台为Quartz.Net,通过Quart可以快速完成任务调度的工作.
- Quartz能干什么/应用场景
- 如网页游戏中挂机自动修炼如8个小时,人物相关数值进行成长,当使用某道具后,时间减少到4个小时,人物对应获得成长值.这其中就涉及到了Scheduler的操作,定时对人物进行更新属性操作,更改定时任务执行时间.
- 网页游戏中会大量涉及到Scheduler的操作,有兴趣的朋友可自行联想.
- 企业中如每天凌晨2点触发数据同步、发送Email等操作
- 同类框架对比
- TimeTask TimeTask在Quartz前还是显得过于简单、不完善,不能直接满足开发者的较为复杂的应用场景.
- 资源
- 官网:http://www.quartz-scheduler.org/
- 下载:http://www.quartz-scheduler.org/downloads
- maven pom
- <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>
- <dependency>
- 源代码 svn:http://svn.terracotta.org/svn/quartz
- 本文章采用的是2.21版本:优快云下载:http://download.youkuaiyun.com/detail/chenweitang123/7636703
- 例子Demo:优快云下载:整理完后上传.
- 框架分析
- 接口
- 类图
- Quartz中的设计模式
- Builder模式
- 所有关键组件都有Builder模式来构建 <Builder> 如:JobBuilder、TriggerBuilder
- Factory模式
- 最终由Scheduler的来进行组合各种组件 <Factory> 如SchedulerFactory
- Quartz项目中大量使用组件模式,插件式设计,可插拔,耦合性低,易扩展,开发者可自行定义自己的Job、Trigger等组件
- 链式写法,Quartz中大量使用链式写法,与jQuery的写法有几分相似,实现也比较简单,如:
- $(this).addClass("divCurrColor").next(".divContent").css("display","block");
-
newTrigger().withIdentity( "trigger3", "group1").startAt( startTime).withSchedule(simpleSchedule().withIntervalInSeconds(10).withRepeatCount(10)).build();
- Builder模式
- 框架核心分析
- SchedulerFactory -- 调度程序工厂
- StdSchedulerFactory -- Quartz默认的SchedulerFactory
- DirectSchedulerFactory -- DirectSchedulerFactory是对SchedulerFactory的直接实现,通过它可以直接构建Scheduler、threadpool 等
- ThreadExecutor / DefaultThreadExecutor -- 内部线程操作对象
- JobExecutionContext -- JOB上下文,保存着Trigger、 JobDeaitl 等信息,JOB的execute方法传递的参数就是对象的实例
- JobExecutionContextImpl
- Scheduler -- 调度器
- StdScheduler -- Quartz默认的Scheduler
- RemoteScheduler -- 带有RMI功能的Scheduler
- JOB --任务对象
- JobDetail -- 他是实现轮询的一个的回调类,可将参数封装成JobDataMap对象,Quartz将任务的作业状态保存在JobDetail中.
- JobDataMap -- JobDataMap用来报错由JobDetail传递过来的任务实例对象
- Trigger
- SimpleTrigger <普通的Trigger> -- SimpleScheduleBuilder
- CronTrigger <带Cron Like 表达式的Trigger> -- CronScheduleBuilder
- CalendarIntervalTrigger <带日期触发的Trigger> -- CalendarIntervalScheduleBuilder
- DailyTimeIntervalTrigger <按天触发的Trigger> -- DailyTimeIntervalScheduleBuilder
- ThreadPool -- 为Quartz运行任务时提供了一些线程
- SimpleThreadPool --一个Quartz默认实现的简单线程池,它足够健壮,能够应对大部分常用场景
- -----以上是Quartz涉及到的一些关键对象,详细的内容如有机会会在后续的文章中展开!
- SchedulerFactory -- 调度程序工厂
- Quartz类图
- 类图中主要分为5块:Factory、Bulider、Scheduler、Trigger、JOB
- 思想
- 一句话看懂Quartz
-
1、创建调度工厂(); //工厂模式2、根据工厂取得调度器实例(); //工厂模式3、Builder模式构建子组件<Job,Trigger> // builder模式, 如JobBuilder、TriggerBuilder、DateBuilder4、通过调度器组装子组件 调度器.组装<子组件1, 子组件2... > //工厂模式5、调度器.start(); //工厂模
-
Hello Quartz / 本文通过一个简单的例子让大家快速了解Quartz,上手,并了解Quartz内的一些关键对象 如 Scheduler、Job、Trigger、JobExecutionContext等对象
- 导入Quartz所需的两个jar包 <quartz-2.2.1.jarr、quartz-jobs-2.2.1.jar>
- 创建我们自己的Job类 HelloJob,进行简单的输出
- 创建我们的Job运行例子,在下一分钟执行我们自己Job
- 让我们来看看上面的代码究竟做了些什么:
- 创建一个Quartz Job类,必须实现 org.quartz.Job ,这个接口只有一个你要实现的方法,execute方法,其中execute的接口定义如下
- void execute(JobExecutionContext context) throws JobExecutionException;
- 当Quartz调度器到约定的时间,它就会生成一个Job的实例,所以你实现Job接口 必须提供一个公有函数,否则会抛出异常,并调用execute方法.其中调度器只管执行,而不关心结果,除非抛出JobExecutionException异常.
- JobExecutionContext 中封装有Quartz运行所需要的所有信息,可以参见下面具体的代码片段.
- 其中涉及到的Scheduler、Job、Trigger 3个关键对象 (后续会专门介绍这3个对象)
- 其中Scheduler调度器对象,它的方法有start()、shutdown()等方法,负责管理整个调度作业.
- Job 又与几个对象有关 Job、JobDetail、JobDataMap
- 通过类图来看他们之间的关系
- 通过类图可以很明显的看出由JobExecutionContext来组装各个子组件,我们看看JobExecutionContextImpl的源代码,它保存着所有上下文信息
- 关于JobDetail
- JobDetail不存储具体的实例,但它允许你定义一个实例,JobDetail 又指向JobDataMap
- JobDetail持有Job的详细信息,如它所属的组,名称等信息
- 关于JobDataMap
- JobDataMap保存着任务实例的对象,并保持着他们状态信息,它是Map接口的实现,即你可以往里面put和get一些你想存储和获取的信息.
- 关于Trigger
- 即根据具体约定的触发器,具体的如:SimpleTrigger、CronTrigger 等
- 创建一个Quartz Job类,必须实现 org.quartz.Job ,这个接口只有一个你要实现的方法,execute方法,其中execute的接口定义如下
- 导入Quartz所需的两个jar包 <quartz-2.2.1.jarr、quartz-jobs-2.2.1.jar>
-
相关推荐
一文带你了解Quartz
在调度进行任务争抢时先对数据库表上锁,只有拿到锁的节点才可以进行获取任务并调度,这种是常规情况下的解决方案,但这种实现方式有着很强的倾入性,且在高并发的场景性能表现也不是很出色,所以大部分情况下,我们不是很推荐通过数据表的形式实现分布式任务调度一致性。框架分布式任务调度的较好解决方案,通过在内存中进行任务争抢,大大提分布式调度性能,但还是存调度空跑问题,即先抢到锁的节点获取仅有的任务,而其他节点随后得锁后却没有执行任务,造成一次空跑。为工作内容,并按照触发器的安排进行任务的调度的任务定时被调度器执行。
Quartz中Job相关类的理解和使用
原链接地址:https://www.jianshu.com/p/de06cf3c946b (一)、Job Job可以理解为就是一个工作任务,代码中就是一个实现了org.quartz.Job或org.quartz.StatefulJob接口的java类。当Scheduler决定运行Job时,execute()方法就会被执行。 具体可以干啥: 1、每天定时发送系统邮件 2、在指...
使用QGIS提取天地图遥感影像中的建筑物轮廓,及AI方案
用QGIS的插件提取遥感影像中的建筑轮廓,并提供了几个AI提取建筑轮廓的方案。
java org.quartz.job_Java基于Quartz的定时任务调度服务(一)
Quartz的基本用法一 Quartz的简单介绍Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现,一个优秀的开源调度框架,其特点是:强大的调度能力.灵活的应用方式,分布式和集群的能. 官网:http://www.quartz-scheduler.orgQuartz的核心元素Scheduler:任务调度器,是实际执行任务调度的控制器Trigg...
DDR5内存ODT模式全解析:5种状态与实战配置指南(附时序图)
本文深入解析DDR5内存的片上终端电阻(ODT)机制,详细阐述了其五种核心状态(终结电阻禁用、RTT_WR、RTT_NOM_RD、RTT_NOM_WR、RTT_PARK)的定义、切换时序与工作原理。通过解读JESD79-5规范中的时序图,并提供基于模式寄存器的实战配置指南与代码示例,帮助硬件工程师和系统开发者优化信号完整性,解决高负载下的稳定性问题,并实现性能与功耗的最佳平衡。
手把手教你解决Kernel panic报错:init找不到的5种排查方法(附NFS挂载实战)
本文深入解析了Linux系统启动时出现“Kernel panic - not syncing: No working init found”报错的根本原因,并提供了五种系统性的排查方法。文章结合NFS挂载根文件系统的实战场景,详细阐述了从动态链接库依赖、内核引导参数、NFS权限配置、文件系统完整性到内核配置干扰的完整排查路径,帮助开发者快速定位并解决这一常见的系统启动故障。
Quartz任务调度-01
一.Quartz概念 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。 quartz是开源且具有丰富特性的"任务调度库",能够集成于任何的java应用,小到独立的应用,大至电子商业系统。quartz能够创建亦简单亦复杂的调度,以执行上十、上百,甚至上万的任务。任务job被定义为标准的java...
【Claude】Claude Code 子代理(Subagents)完全指南:多 AI 编排与并行任务管理
子代理是在独立上下文窗口特性主代理子代理上下文窗口与你对话的主上下文完全独立的上下文工具权限拥有所有工具可自定义限制生命周期整个会话完成任务后结束通信方式直接对话结果返回给主代理模型继承主会话设置可指定不同模型你可以创建专属子代理,指定模型、工具权限和系统提示。在对话中,Claude 会根据任务自动选择合适的子代理。
Quartz官网
官网:http://quartz-scheduler.org/ 学习文档:http://quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/ 例子:http://quartz-scheduler.org/documentation/quartz-2.1.x/examples/ spring集成官网:http://static.
YOLOv8改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用
本文记录的是利用优化的目标检测方法研究。深度可分离卷积可以减少FLOPs,但会导致更高的内存访问,引起延迟并减慢整体计算。部分卷积利用逐点卷积处理通道冗余,减少模型计算量和内存访问量。Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks及其改进的实现代码如下: 四、创新模块 4.1 改进点⭐ 模块改进方法:直接加入(第五节讲解添加步骤)。模块加入如下:模块改进方法:基于的(第五节讲解添加步骤)。第二种改进方法是对中的进行改进,并将
双像素传感器的AI计算摄影实战:单目深度估计与图像去模糊的融合创新
本文介绍了双像素传感器技术在计算机视觉中的应用,包括深度估计、图像去模糊和图像重建等任务。双像素传感器通过两个子单元捕捉视差信息,使摄像头能够分析场景的三维结构和运动轨迹。文章以图像去模糊为例,详细展示了从数据准备到模型训练的完整流程,包括构建自定义数据集、设计双像素特征提取模块、训练去模糊模型及推理测试。通过模拟双像素的"双视角"信息融合,该AI算法能有效恢复模糊图像的清晰细节。
Quartz的了解
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。quartz是开源且具有丰富特性的"任务调度库",能够集成于任何的java应用,小到独立的应用,大至电子商业系统。quartz能够创建亦简单亦复杂的调度,以执行上十、上百,甚至上万的任务。任务job被定义为标准的java组件,能够执行任何你想要实现的功能。quartz调度框架包含许多企业级的特性,如JTA事务、集群的支持。
FreeRTOS全攻略:从入门到精通
本文聚焦 FreeRTOS,从基础概念出发,阐述其开源、轻量级等优势。着重介绍 FreeRTOS 入门知识,涵盖内存管理、任务操作、同步互斥机制等核心内容。其中,空闲任务与钩子函数保障系统基础运行与功能扩展;队列、信号量、互斥锁和事件组等机制,分别从数据传递、资源访问控制、优先级问题解决及多任务同步等方面,为开发者提供高效的任务间协作与资源管理方案,助力开发者掌握 FreeRTOS 核心技术,为嵌入式项目开发筑牢基础。
了解Quartz
Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述: ●Job:是一个接口,只有一个方法void execute(JobExecutionContext context),开发者实现该接口定义运行任务,JobExecutionContext类提供了调度上下文的各种信息。Job运行时的
《Linux GPU 驱动核心机制:面向图形与 AI 计算的 DRM 内存管理与任务调度》 目录
本文以缓冲区对象(BO)生命周期为主线,系统解析 Linux DRM 子系统中 GPU 驱动的核心机制。涵盖 GEM 与 TTM 内存管理、dma-buf/dma-fence 共享同步、GPU 调度与地址空间管理,结合 amdgpu、Xe 等驱动代码,深入剖析其设计动机与实现逻辑。旨在填补中文领域对 GPU 内核机制系统性讲解的空白,为图形与 AI 计算场景下的内存泄漏、同步死锁等疑难问题提供可追溯的分析路径。
Outlook Express 6 (OE6) for Win7/Win8/Win10
英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。
quartz详解1:初步了解quartz?
一、引入 你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一天执行。一个自动执行而无须干预的任务在执行过程中如果发生一个严重错误,应用能够知到其执行失败并尝试重新执行吗?你和你的团队是用Java编程吗?如果这些问题中任何一个你回答是,那么你应该使用Quartz调度器。 旁注:Matrix目前就大量使用到了Quartz。比如,排
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
Quartz框架(了解篇)
1.Quartz的作用? 答:Quartz是一个任务调度框架,当遇到以下问题时: 例: 想在每月25号,自动还款; 想在每年4月15日给某人发送邮件; 想每隔1小时,备份一下自己的资料。 总结:可以简单的理解为就是一个定时器,在指定的时间触发,由线程调度去执行 — Quartz基本元素关系图 2.怎么使用? 答:创建“任务调度器” -> 创建并设置“触发器” -> 定义“任务” ->启动! 1.任务调度器:由StdSchedulerFactory工厂获取。例:Scheduler sche
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
quartz详解1:初步了解quartz
http://blog.itpub.net/11627468/viewspace-1763389/一、引入 你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一天执行。一个自动执行而无须干预的任务在执行过程中如果发生一个严重错误,应用能够知到其执行失败并尝试重新执行吗?你和你的团队是用Java编程吗?如果这些问题中任何一个你回答是,那么你应该使用Q...
Quartz
什么是Quartz Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。Quartz允许开发人员根据时间间隔来调度作业。它实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。简单地创建一个org.quarz.Job接口的Java类,Job接口包含唯一的方法: public voi
定时任务之Quartz
Quartz 的设计核心在于将“做什么(Job)”与“何时做(Trigger)”解耦,并通过“调度器(Scheduler)”进行管理。注意:使用数据库模式前,需确保数据库中已存在 Quartz 所需的 11 张表(如。如果不配置任何 Quartz 属性,Spring Boot 默认使用内存存储。在实际生产中,往往需要通过接口动态添加、修改或删除任务。starter,极大地简化了配置过程。场景 A:内存模式(默认,无需额外配置)Spring Boot 提供了。场景 B:数据库持久化与集群模式。
Quartz使用文档,使用Quartz实现动态任务,Spring集成Quartz,Quartz集群部署,Quartz源码分析
官网:http://www.quartz-scheduler.org/源码地址:https://github.com/quartz-scheduler/quartzQuartz 的意思是石英,像石英表一样精确。Quatz 是一个特性丰富的,开源的任务调度库,它几乎可以嵌入所有的 Java 程序,从很小的独立应用程序到大型商业系统。Quartz 可以用来创建成百上千的简单的或者复杂的任务,这些任务可以用来执行任何程序可以做的事情。Quartz 拥有很多企业级的特性,包括支持 JTA 事务和集群。
quartz mysql死锁问题_Quartz 并发
1、StatefulJobimplements StatefulJob使Job成为有状态的,顺序执行同一个有状态的job实例不存在并发,无状态的job的并发数由上面配置的线程数决定。不想并发的话,设置成1,第二个线程在前一个执行完以后触发执行。线程数大于1时,如果存在空闲线程,则到执行时间点即触发执行。2、MethodInvokingJobDetailFactoryBeanMethodInvoki...
了解spring Quartz体系结构
概述 了解Quartz体系结构 Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述: ●Job:是一个接口,只有一个方法void execute(JobExecutionContext context),开发者实现该接口定义运行任务,JobExecutionContext类提供了调度上
关于Quartz 2D绘图
近期由于所做的任务中涉及Quartz 2D绘图方面的比较多,对Quartz 2D进行了一次深入的研究。Quartz主要就是一些函数,对象来进行对视图在内存中进行绘制,在将视图加入到当前视图中。 首先:获得所在的上下文以便将绘制好的视图加入到现在视图中从而显示。CGContextRef Context=UIGraphicsGetCurrentContext(); 2.颜色:Iphone中基本的颜色为红色,蓝色,绿色,还有透明度也是必备的。他们都是CGFloat类型的,且每个值只能在0到1中
【定时调度】- 01 quartz的基础你真的了解吗
往期推荐【RabbitMQ分析】01 SimpleMessageListenerContainer原理分析【sharding-sphere】 - 01 SQL路由【Nacos源码分析】- ...
2215



被折叠的 条评论
为什么被折叠?



