最近项目里面有用到Quartz框架来开发一些定时任务等,之前是没有接触过它,因此在认真研究后,把我自己的一些学习心得与所写的例子记录在这里。
前几天又再次回顾了以前了解过的一些设计模式,并决心以博客的形式记录与此,主要有两个目的,第一:如果哪天我对这些知识点忘记了,我可以随时拿起手机进行回顾;第二:如果这些知识点能够帮助别人学习那就是再好不过的事了。才记录不到几篇的内容就收到了一些网友的评论,其中有鼓励的声音,也有批评的声音,同时也有怀疑的声音。对于这些我都会欣然去接受,我觉得它们都是对自己的鼓励。同时我想说:“在知识的大森林中我永远想做一只不断追求的菜鸟”。欢迎各位的指正,这将是我莫大的动力。
第一篇 不基于配置的Quartz
首先你需要去下载Quartz,并在MyEclipse中创建一个Java工程,并加入一些jar包,如:我这里加入的包,commons-beanutils.jar,commons-codec.jar,commons-collections-3.1.jar,commons-dbcp-1.2.1.jar,
commons-digester-1.8.jar,commons-logging-1.1.jar,commons-pool.jar,quartz-1.6.0.jar。
每一个quartz job的实现类,都在实现Quartz的job接口,并实现这个接口中的唯一方法:execute。如下代码:
package com.dsl.myjob; import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.Job; import org.quartz.JobDataMap; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class TestJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("enter execute function..."+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); JobDetail jd=context.getJobDetail(); JobDataMap jdm=jd.getJobDataMap(); String hi=jdm.getString("HI"); if(hi!=null){ System.out.println(hi); } String name=jdm.getString("NAME"); if(name!=null){ System.out.println(name); } } }
当 Quartz 调度器确定到时间要激发一个 Job 的时候,它就会生成一个 Job 实例,并调用这个实例的 execute() 方法。调度器只管调用 execute() 方法,而不关心执行的结果.
SimpleScheduler类:
package com.dsl.myjob; import java.util.Date; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SimpleTrigger; import org.quartz.Trigger; import org.quartz.TriggerUtils; import org.quartz.impl.StdSchedulerFactory; public class SimpleScheduler { /** * @param args */ public static void main(String[] args) { SimpleScheduler simple=new SimpleScheduler(); //创建调度器并调度job try { Scheduler sch=simple.createScheduler(); simple.schedulJob(sch); sch.start();//这一步很重要,如果不调start 那么调度器不会启用 //sch.shutdown();//只用调这个方法时,调度器才会关闭 } catch (SchedulerException e) { System.out.println(e); } } private void schedulJob(Scheduler sch) throws SchedulerException { //为job create 一个JobDetail JobDetail jobDetail=new JobDetail("ScanDirectory",Scheduler.DEFAULT_GROUP,TestJob.class); //创建一个每10秒运和的触发器 Trigger trigger=TriggerUtils.makeSecondlyTrigger(10); trigger.setName("scanTrigger");//设置trigger的名称 //设置第一次出发时间 trigger.setStartTime(new Date()); //关联trigger和job sch.scheduleJob(jobDetail,trigger); //--- } //create 调度器 private Scheduler createScheduler() throws SchedulerException { return StdSchedulerFactory.getDefaultScheduler(); } }
可是这样写却有很多不方便之处:
1、因为每一个 Job 都必须用 Scheduler 来注册,所以先定义一个 JobDetail,并关联到这个 Scheduler的 实例。如果我想重用一个Job类,并让它产生多个实例,那们你就要为它创建多个JobDetail 并在Scheduler注册,这样就不爽了。
2、如果我们要在 Job 启动之后改变它的执行时间和频度,必须去修改源代码重新编译,这样也不方便。
所以Quartz它提供了方便的基于配置的实现。学习二中将提到。
相关推荐
Quartz学习1:深入理解分布式任务调度框架 Quartz是一个开源的作业调度框架,它允许开发者根据时间间隔来安排任务执行。在Java开发领域,Quartz是广泛应用的任务调度工具,尤其在需要进行定时任务处理或者分布式...
Quartz是一款开源的作业调度框架,它允许开发者在Java应用程序中定义、安排和执行复杂的任务。这个学习笔记将深入探讨Quartz的核心概念、主要功能以及如何在实际项目中使用它。 首先,我们要理解Quartz的基本架构。...
1. **Quartz集群的基本概念** - **Job**:任务,是执行的具体逻辑。 - **Trigger**:触发器,决定何时执行Job。 - **Scheduler**:调度器,管理Job和Trigger,负责调度执行。 - **InstanceId**:每个Quartz节点...
六、Quartz学习资源 本教程、学习手册和帮助手册将详细阐述Quartz的各个方面,从基本使用到高级特性的实践,帮助开发者从初学者到精通者。通过阅读这些资料,你可以掌握如何在项目中有效地使用Quartz,提升系统的...
1. **嵌入式运行**:Quartz 可以作为独立的库嵌入到任何Java应用中,无需额外的服务器支持。它可以在单独的Java虚拟机中运行,或者通过RMI(远程方法调用)进行分布式操作。 2. **事务支持**:Quartz 支持与...
1. **Quartz 基本概念**: - **Job**:Quartz 中的 Job 是执行任务的基本单元,代表一个待执行的工作。 - **Trigger**:触发器定义了何时以及如何启动 Job。有多种类型的 Trigger,如 SimpleTrigger(一次性触发)...
在这个"Quartz学习的eclipse项目的实例"中,我们将深入探讨如何在Eclipse开发环境中配置和使用Quartz来实现复杂的定时调度需求。 首先,让我们了解Quartz的基本概念。Quartz的核心组成部分包括Job(工作)、Trigger...
1. **Job**:Job是Quartz中的基本工作单元,代表一个需要执行的任务。开发者需要自定义Job类,并实现`org.quartz.Job`接口,覆盖`execute`方法来编写实际的业务逻辑。 2. **Trigger**:触发器决定了Job何时运行。...
Quartz是一个开源的作业调度框架,它允许Java开发者在应用程序中定义复杂的任务调度。Quartz中文教程学习资源对于初学者来说是非常有价值的,因为它可以帮助你快速理解这个强大的工具,并将其有效地应用到实际项目中...
通过阅读《Quartz学习.doc》和《Quartz学习.ppt》,你可以更深入地了解Quartz的原理、配置、使用示例和最佳实践,进一步提升你在Web开发中的任务调度能力。文档中可能还会涵盖如何处理Job执行异常、如何设置Job依赖...
1. **Job**: Job是执行的具体任务,它是Quartz中的一个接口。你需要定义自己的类实现这个接口,并在`execute()`方法中编写实际的工作逻辑。 2. **Trigger**: Trigger是触发Job执行的时间规则。你可以定义不同的...
1. **Job**:工作,它是实际要执行的任务,可以定义一个Java类实现`org.quartz.Job`接口来创建Job。 2. **Trigger**:触发器,决定Job何时执行。Quartz提供了多种类型的Trigger,如SimpleTrigger(简单触发器)和...
### Quartz 学习知识点 #### 一、Quartz 概述 - **Quartz** 是一个功能强大的**开源任务调度框架**,适用于 Java 应用程序。它支持复杂的触发规则,能够灵活地调度任务。 #### 二、Quartz 的运行环境 - **嵌入式...
1. 创建Job类:你需要继承`org.quartz.Job`接口并实现`execute(JobExecutionContext context)`方法,这里编写你的任务逻辑。 2. 注册Job类:通过`org.quartz.Scheduler`的`scheduleJob()`方法,将Job实例和Trigger...
Quartz是一款开源的作业调度框架,它为Java应用程序提供了强大的作业调度能力。作为一个专业的IT行业大师,理解并掌握Quartz的使用是至关重要的。本文将深入解析Quartz的核心概念、特性以及如何在实际项目中应用。 ...
1. **创建作业**:首先,你需要创建一个实现了`org.quartz.Job`接口的类,这个类就是你的任务逻辑。在`execute()`方法中编写实际的业务代码。 2. **定义触发器**:接着,定义一个触发器,设置执行时间。例如,你...
### Java框架介绍: Quartz从入门到进阶 ...无论是对于初学者还是有经验的开发者来说,Quartz都是一个值得深入学习和使用的工具。通过对Quartz的学习和实践,可以大大提高开发效率并为项目带来更高的稳定性和可靠性。