`

定时任务Java编写综述之Quartz理论(3)

阅读更多

3.6 Job Execution(任务执行)

任务是任何实现简单Job接口的Java 类,这样开发者能够执行任何完成他们工作的任务。

任务类的实例可以由Quartz实例化,也可以由你的程序框架实例化。

当触发器被触发时,日程管理器将会通知某个或者多个实现了JobListener TriggerListener的对象(监听器可以是简单的Java对象,或者EJBs,或者JMS消息发布器,等等)。这些监听器在任务执行完毕后也会接到通知。

任务被完成后,他们会返回一个“任务完成码(JobCompletionCode)”,这个“任务完成码”告知日程管理器任务执行的结果是成功还是失败。日程管理器会根据成功或者失败码来采取措施,比如:立即重新执行任务。

 

3.7 Job Persistence(任务持久化)

Quartz设计中包括了一个JobStore接口,这样,实现这个接口的Job类可以以多种机制实现Job的存储。

通过使用JDBCJobStore,所有的JobsTriggers被配置为“non-volatile(不轻快)的方式。即,通过JDBC存储在关系数据库中。

通过使用RAMJobStore,所有JobsTriggers被存储在RAM。因此,在程序执行中没有被持久化,但这种方式的优点就是不需要外部数据库。

 

3.8 Transactions(事务)

Quartz通过JobStoreCMTJDBCJobStore的一个子类)可参与JTA事务。

Quartz可以管理JTA事务(开始或者提交事务)。

 

3.9 Clustering(集群)

Fail-over.(容错)

Load balancing.(负载均衡)

 

3.10 Listeners &Plug-Ins(监听器及插件)

应用可以通过实现一个或者多个监听器接口来实现捕捉日程事件,以监视或控制任务/触发器的行为。

可以通过插件的机制来扩展Quartz 的功能。例如:记录任务执行历史的日志,或者从文件中载入任务和触发器的定义。

 

3.11 夏令时和触发器

CronTrigger SimpleTrigger分别用它们自己的方式来处理夏令时,每种方式对与触发器类型来说都很直观。

(夏令时开始的时刻,时钟要向前(未来)拨一个小时,夏令时结束的时刻,时钟向后(过去)拨一个小时)

SimpleTrigger允许你每隔若干毫秒来触发纳入进度的任务。因此,对于夏令时来说,根本不需要做任何特殊的处理来“保持进度”。它只是简单地保持每隔若干毫秒来触发一次,无论你的SimpleTrigger每隔10秒触发一次还是每隔15分钟触发一次,还是每隔24小时触发一次。但是这隐含了一个混乱,对于那些每隔12个小时触发一次的SimpleTrigger来说,在实行夏令时之前,任务是在凌晨3点及下午3点触发,但是在执行夏令时后,人物是在凌晨4点及下午4点触发。这不是Bug,触发器仍然保持了每隔若干毫秒触发一次,只是时间的“名字”被人为地强行改变了。

CronTrigger能在特定“格林日历”时刻触发纳入进程的任务,因此,如果创建一个在每天上午10点触发的触发器,那么,在夏令时执行之前,系统将继续如此运作。但是,取决于是春季还是秋季夏令时,因为对于特定的星期日,从星期六上午10点到星期日上午10点之间的时间间隔将不是24小时,而可能是23或者25个小时。

总之,如果你记住下面的两条规则,则会感觉良好并且很容易记忆:

SimpleTrigger 总是每隔若干秒触发,而同夏令时没有关系。

 

CronTrigger 总是在给定的时间出发然后计算它下次触发的时间。如果在给定的日期内没有该时间,则触发器将会被忽略,如果在给定的日期内该时间发生了两次,它只触发一次。因为是在第一次触发发生后计算当天下次触发的时间。

 

 

分享到:
评论

相关推荐

    java quartz 定时任务

    - Quartz 是一个完全由Java编写的开源作业调度框架,它可以在Java应用中用于执行定时任务。Quartz 支持集群环境,可以在多台服务器上分布式运行,以提高系统的可用性和可靠性。 2. **定时任务**: - 定时任务是在...

    java定时任务quartz的基本实现

    Quartz是Java领域中一个广泛使用的开源任务调度框架,它提供了丰富的功能来满足各种定时任务的需求。本篇文章将深入探讨Quartz的基本实现,以及如何在Java项目中运用它。 首先,Quartz的核心概念包括作业(Job)、...

    Quartz--JAVA定时任务\Java应用:Java调度任务和Spring Quartz (1)

    总结来说,Quartz是Java中强大的定时任务库,通过它我们可以方便地创建和管理复杂的任务调度,包括但不限于在特定时间点执行任务、按固定间隔重复执行、甚至在满足特定条件时触发任务。相比`java.util.Timer`,...

    定时任务完整案例 Java quartz

    【标题】"定时任务完整案例 Java quartz" 涉及的核心技术是Java的调度库Quartz,它是一个开源的工作调度框架,广泛应用于企业级应用中,用于执行定时任务。Quartz能够帮助开发者创建、调度和执行任务,实现高度灵活...

    定时任务quartz实现分组串行并行动态配置

    Quartz是一款广泛使用的开源作业调度框架,它允许开发者在Java应用程序中定义和执行定时任务。在实际应用中,我们可能需要根据业务需求动态地配置定时任务的执行方式,例如,某些任务可能需要串行执行,而其他任务则...

    spring整合java quartz实现动态定时任务的前台网页配置与管理

    在实际项目应用中经常会用到定时任务,可以通过quartz和spring的简单配置即可完成,但如果要改变任务的执行时间、频率,废弃任务等就需要改变配置甚至代码需要重启服务器,这里介绍一下如何通过quartz与spring的组合...

    spring+quartz动态定时任务创建 +mybatis

    总的来说,Spring、MyBatis和Quartz的结合,为Java开发者提供了一套强大的工具集,可以方便地构建和管理具有动态定时任务功能的企业级应用。这种技术栈的使用,不仅可以提高开发效率,还能保证应用的稳定性和扩展性...

    java-springboot-quartz-定时任务.zip

    Java SpringBoot Quartz 定时任务是一个广泛应用于企业级开发中的技术组合,主要用于自动化执行周期性的任务。SpringBoot作为轻量级的框架,简化了Spring应用的初始搭建以及开发过程,而Quartz则是一个功能强大的...

    quartz 实现按天、按周、按月定时任务的简单demo

    在这个“quartz 实现按天、按周、按月定时任务的简单demo”中,我们将探讨如何使用 Quartz 在 Java 环境下设置按天、按周和按月的定时任务。 首先,我们需要引入 Quartz 的依赖库到项目中。通常,这可以通过 Maven ...

    Java使用quartz实现任务调度定时任务

    在Java世界里,Quartz是一个强大的、完全开源的作业调度框架,广泛用于构建复杂的时间触发任务。本篇文章将深入探讨如何使用Quartz在Java应用程序中实现任务调度。 Quartz库提供了一个灵活的API,可以创建、调度和...

    Spring+Quartz 从数据库中获取定时任务和定时时间,动态实现对定时任务的增删改查

    3. **动态增删改查**:为了实现动态的定时任务管理,我们需要创建一个服务层,该层负责与数据库交互,进行CRUD操作。例如,我们可以创建`JobService`,包含添加、删除、更新和查询作业的方法。这些方法需要更新...

    基于SSM+quartz的定时任务管理demo

    【SSM+Quartz 定时任务管理Demo详解】 在Java Web开发中,定时任务是一项常见且重要的功能,用于执行一些周期性或者特定时间点的任务,例如数据统计、备份、清理等。本Demo以"基于SSM+quartz的定时任务管理"为主题...

    java定时执行多任务和quartz定时执行多任务

    总之,Java的定时任务可以通过内置工具或Quartz等外部库来实现。选择哪种方式取决于具体的需求和项目规模。对于简单的定时任务,内置工具足以满足;而对于复杂、需要高灵活性和扩展性的定时任务,Quartz是更好的选择...

    Quartz定时任务框架

    Quartz是一款开源的作业调度框架,它为Java应用程序提供了强大的定时任务管理能力。作为一个专业的IT行业大师,我将深入解析Quartz的核心概念、工作原理以及如何实现简单的定时任务。 Quartz的主要功能在于允许...

    java动态管理定时任务

    在Java开发中,定时任务是不可或缺的一部分,尤其在企业级应用中,用于执行定期的数据处理、报表生成、系统维护等工作。Spring框架与Quartz库的整合提供了强大的动态管理定时任务的能力。下面我们将深入探讨这个主题...

    Quartz定时任务表达式

    Quartz是一个开源的作业调度框架,能够触发在指定时间运行的任务,广泛应用于Java应用程序中进行定时任务的管理。Quartz的核心是Cron表达式,它允许开发者以一种灵活且可读性高的方式定义任务的执行时间。 #### ...

    quartz动态添加、修改和删除定时任务

    Quartz是一款开源的作业调度框架,它允许开发者创建、安排和管理定时任务。在Java应用程序中,Quartz常被用来实现后台任务的自动化执行,比如数据同步、日志清理、发送邮件等。本教程将详细介绍如何动态地在Quartz中...

    Quartz定时任务简单列子

    Quartz是一款开源的作业调度框架,它允许在Java应用程序中创建和管理定时任务。这个"Quartz定时任务简单列子"可能是一个简单的教程或者示例项目,用于展示如何在Java应用中集成和使用Quartz来执行预定的任务。 ...

    spring java 定时器 执行两次 quartz

    Quartz是一款强大的开源任务调度库,它能够与Java应用程序无缝集成,实现复杂的时间触发任务。当我们遇到Spring定时器执行两次或者更多次的问题时,这通常是由于配置不当或者多线程并发导致的。下面将详细介绍如何...

    Quartz 定时任务web使用

    Quartz 是一个开源的作业调度框架,常用于Java应用程序中实现定时任务的管理。它提供了丰富的API和功能,使得开发者可以灵活地定义和控制任务的执行。本篇将重点介绍如何在Web环境中集成并使用Quartz,以及相关的...

Global site tag (gtag.js) - Google Analytics