1、Timer介绍
建立任务:使用Timer调度的任务应该继承TimerTask抽象类,该类实现Runnable接口,因些具备多线程的能力,实现该接口的run方法,该方法是需要高度的任务执行体。
调度任务:调度任务通过Timer类完成,调度任务通过schedul方法完成,查一下java doc文档:
-
void schedule(TimerTask task, Date time)
-
安排在指定的时间执行指定的任务。
-
void schedule(TimerTask task, Date firstTime, long period)
-
安排指定的任务在指定的时间开始进行重复的固定延迟执行。
-
void schedule(TimerTask task, long delay)
-
安排在指定延迟后执行指定的任务。
-
void schedule(TimerTask task, long delay, long period)
-
安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。
2、Quartz介绍
作业:作业是一个执行任务的java类,可以是任何java代码,只需实现org.quartz.job接口即可.Job接口包含一个方法execute(),execute方法体是被调度的作业体。一旦实现Job接口和execute()方法,Quartz确定作业运作的时候,它将调用execute()方法体。
触发器:有SimpleTrigger和CronTrigger两种类型。
调度器:调度器用于将与作业触发器关联,一个作业可关联多个触发器,这样,每个触发器被可以触发的作业执行;一个触发器可用于控制多个作业,触发触发时,全部作业将获得调度。Quartz的调度器由Scheduler接口体现。
3、详细介绍Cron表达式(CronTriggerBean创建是基于Cron表达式的触发器的)
Cron表达式是一个字符串,字符串以5或6个空格隔开,分开工6或7个域,每一个域代表一个含义,Cron有如下两种语法
格式:
Seconds Minutes Hours DayofMonth Month DayofWeek Year 或
Seconds Minutes Hours DayofMonth Month DayofWeek 每一个域可出现的字符如下:
-
Seconds:可出现,- * / 四个字符,有效范围为0-59的整数
-
Minutes:可出现,- * / 四个字符,有效范围为0-59的整数
-
Hours:可出现,- * / 四个字符,有效范围为0-23的整数
-
DayofMonth:可出现,- * / ? L W C八个字符,有效范围为0-31的整数
-
Month:可出现,- * / 四个字符,有效范围为1-12的整数或JAN-DEc
-
DayofWeek:可出现,- * / ? L C #四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推
-
Year:可出现,- * / 四个字符,有效范围为1970-2099年
每一个域都使用数字,但还可以出现如下特殊字符,它们的含义是:
-
(1)*:表示匹配该域的任意值,假如在Minutes域使用*,即表示每分钟都会触发事件。
-
-
(2)?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?,其中最后一位只能用?,而不能使用*,如果使用*表示不管星期几都会触发,实际上并不是这样。
-
-
(3)-:表示范围,例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次
-
-
(4)/:表示起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次.
-
-
(5),:表示列出枚举值值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次。
-
-
(6)L:表示最后,只能出现在DayofWeek和DayofMonth域,如果在DayofWeek域使用5L,意味着在最后的一个星期四触发。
-
-
(7)W:表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发事件。例如:在DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日触发;如果5日在星期一到星期五中的一天,则就在5日触发。另外一点,W的最近寻找不会跨过月份
-
-
(8)LW:这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五。
-
-
(9)#:用于确定每个月第几个星期几,只能出现在DayofMonth域。例如在4#2,表示某月的第二个星期三。
-
0 0 2 1 * ? * 表示在每月的1日的凌晨2点调度任务
-
0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业
-
0 15 10 ? 6L 2002-2006 表示200-2006年的每个月的最后一个星期五上午10:15执行作业
分享到:
相关推荐
Java任务调度工具是Java开发中一个非常重要的组件,主要用于自动化执行特定的任务,如数据同步、报表生成、系统维护等。当项目中的定时任务数量增加,手动管理这些任务变得复杂且容易出错时,引入任务调度工具显得尤...
Quartz是功能强大的开源作业调度库,几乎可以集成到任何Java应用程序中-从最小的独立应用程序到最大的电子商务系统。Quartz可用于创建简单或复杂的计划,以执行数以万计,数以万计的工作;任务定义为标准Java组件的...
### Java任务调度详解 在IT领域,特别是在Java编程中,任务调度是一项至关重要的技术,它允许开发者安排程序在特定的时间点或按照特定的时间间隔执行任务。这种能力对于自动化流程、定期执行维护操作、数据同步以及...
Java任务调度库jconch是Java开发者用于在应用程序中实现定时任务的重要工具。它提供了灵活、可扩展的机制,使得开发者能够轻松地定义和管理周期性的任务执行。在这个专题中,我们将深入探讨Java任务调度的核心概念,...
Java任务调度是软件开发中的一个重要概念,它涉及到如何在预设的时间或事件触发时自动执行特定的任务。"jconch"可能是一个Java实现的任务调度框架,但具体信息不足,我们只能根据常见的情况来讨论Java任务调度的一般...
Java任务调度是软件开发中的一个重要概念,主要用于自动化执行周期性的任务或者在特定时间点执行的任务。Jconch是一个基于Java实现的任务调度框架,它提供了一种简单、灵活的方式来管理和执行计划任务。在这个“java...
几种任务调度的 Java 实现方法,
Java任务调度框架Quartz2.0.2是一个强大的开源任务调度库,被广泛应用于各种Java应用程序中,包括Web应用和企业级系统。Quartz允许开发者安排任务以在特定时间执行,提供灵活的时间触发器和可插拔的Job执行策略。在...
java任务调度系统毕业设计答辩PPT.pptx java任务调度系统是基于SSH目录的毕业设计项目,该系统的设计与实现主要是为了解决企事业单位项目的任务集进行调度分配,提高项目组的工作效率,降低项目成本。系统的主要...
JAVA源码Java任务调度jconch
java资源Java任务调度 jconch提取方式是百度网盘分享地址
为您提供PowerJob java任务调度框架下载,PowerJob是全新一代分布式调度与计算框架,支持CRON、API、固定频率、固定延迟等调度策略,提供工作流来编排任务解决依赖关系,使用简单,功能强大,文档齐全,能让您轻松...
### Java任务调度框架Quartz教程实例 #### 一、Quartz框架简介 Quartz是一个功能齐全、开源的任务调度服务框架,它可以被集成到几乎所有类型的Java应用程序中,无论是小型的独立应用还是大型的企业级系统,甚至是...
Java任务调度库Quartz是一个强大的开源任务调度框架,它允许开发者在Java应用程序中安排复杂的作业执行。本实例提供了一个简洁的、易于理解的Quartz应用示例,旨在帮助开发者快速集成到自己的项目中。 首先,Quartz...
浅谈Java任务调度.pdf
Java任务调度框架Quartz是Java开发中用于自动化任务执行的重要工具,特别适用于企业级应用和服务。Quartz 1.8.6是该框架的一个稳定版本,提供了强大的定时任务管理和执行能力。下面我们将深入探讨Quartz的基本概念、...
Java实现任务调度的过程中,涉及到的关键技术和工具包括Quartz调度器和Spring框架。Quartz是一个功能强大的开源作业调度系统,它可以用来整合到Java应用程序中,以实现作业调度的功能。Spring框架是一个广泛使用的...
本项目是一款基于SpringBoot和Quartz构建的Java任务调度系统源码,代码精简,主要包含34个Java类、5个XML配置文件、4个SQL脚本、3个YAML配置文件以及少量JavaScript和HTML文件,共计54个文件。该系统设计旨在帮助...
使用Quartz2.0版本,做的任务调度的测试demo,其中该博客中也有相应的介绍,版本不同,操作的类具体的实现不同,但是思路是大体相同的。 另外,为了做比较,另一个资源中,还会有1.8版本的demo。
本文将详细介绍三种常用的Java任务调度实现方式:`Timer`, `ScheduledExecutorService` 和 `Quartz`,并通过示例代码对比它们的特点与适用场景。 #### 一、`java.util.Timer` `java.util.Timer` 是Java早期提供的...