`
deng816
  • 浏览: 6682 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Quartz学习一

阅读更多

              最近项目里面有用到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它提供了方便的基于配置的实现。学习二中将提到。 

4
0
分享到:
评论
2 楼 jiaonan 2013-10-17  
继续关注
1 楼 wingsrao 2013-10-17  
简单明了。解释的不错。

相关推荐

    quartz学习1

    Quartz学习1:深入理解分布式任务调度框架 Quartz是一个开源的作业调度框架,它允许开发者根据时间间隔来安排任务执行。在Java开发领域,Quartz是广泛应用的任务调度工具,尤其在需要进行定时任务处理或者分布式...

    Quartz学习笔记

    Quartz是一款开源的作业调度框架,它允许开发者在Java应用程序中定义、安排和执行复杂的任务。这个学习笔记将深入探讨Quartz的核心概念、主要功能以及如何在实际项目中使用它。 首先,我们要理解Quartz的基本架构。...

    spring quartz学习总结: cluster的配置和示例

    1. **Quartz集群的基本概念** - **Job**:任务,是执行的具体逻辑。 - **Trigger**:触发器,决定何时执行Job。 - **Scheduler**:调度器,管理Job和Trigger,负责调度执行。 - **InstanceId**:每个Quartz节点...

    quartz教程 quartz学习手册 quartz帮助手册

    六、Quartz学习资源 本教程、学习手册和帮助手册将详细阐述Quartz的各个方面,从基本使用到高级特性的实践,帮助开发者从初学者到精通者。通过阅读这些资料,你可以掌握如何在项目中有效地使用Quartz,提升系统的...

    人物调度Quartz 学习

    1. **嵌入式运行**:Quartz 可以作为独立的库嵌入到任何Java应用中,无需额外的服务器支持。它可以在单独的Java虚拟机中运行,或者通过RMI(远程方法调用)进行分布式操作。 2. **事务支持**:Quartz 支持与...

    quartz 项目学习源码

    1. **Quartz 基本概念**: - **Job**:Quartz 中的 Job 是执行任务的基本单元,代表一个待执行的工作。 - **Trigger**:触发器定义了何时以及如何启动 Job。有多种类型的 Trigger,如 SimpleTrigger(一次性触发)...

    Quartz学习的eclipse项目的实例

    在这个"Quartz学习的eclipse项目的实例"中,我们将深入探讨如何在Eclipse开发环境中配置和使用Quartz来实现复杂的定时调度需求。 首先,让我们了解Quartz的基本概念。Quartz的核心组成部分包括Job(工作)、Trigger...

    Quartz学习

    1. **Job**:Job是Quartz中的基本工作单元,代表一个需要执行的任务。开发者需要自定义Job类,并实现`org.quartz.Job`接口,覆盖`execute`方法来编写实际的业务逻辑。 2. **Trigger**:触发器决定了Job何时运行。...

    Quartz中文教程学习

    Quartz是一个开源的作业调度框架,它允许Java开发者在应用程序中定义复杂的任务调度。Quartz中文教程学习资源对于初学者来说是非常有价值的,因为它可以帮助你快速理解这个强大的工具,并将其有效地应用到实际项目中...

    Quartz深入浅出

    通过阅读《Quartz学习.doc》和《Quartz学习.ppt》,你可以更深入地了解Quartz的原理、配置、使用示例和最佳实践,进一步提升你在Web开发中的任务调度能力。文档中可能还会涵盖如何处理Job执行异常、如何设置Job依赖...

    Quartz学习资料

    1. **Job**: Job是执行的具体任务,它是Quartz中的一个接口。你需要定义自己的类实现这个接口,并在`execute()`方法中编写实际的工作逻辑。 2. **Trigger**: Trigger是触发Job执行的时间规则。你可以定义不同的...

    quartz实例,quartz入门例子

    1. **Job**:工作,它是实际要执行的任务,可以定义一个Java类实现`org.quartz.Job`接口来创建Job。 2. **Trigger**:触发器,决定Job何时执行。Quartz提供了多种类型的Trigger,如SimpleTrigger(简单触发器)和...

    Quartz学习.doc

    ### Quartz 学习知识点 #### 一、Quartz 概述 - **Quartz** 是一个功能强大的**开源任务调度框架**,适用于 Java 应用程序。它支持复杂的触发规则,能够灵活地调度任务。 #### 二、Quartz 的运行环境 - **嵌入式...

    Quartz的学习

    1. 创建Job类:你需要继承`org.quartz.Job`接口并实现`execute(JobExecutionContext context)`方法,这里编写你的任务逻辑。 2. 注册Job类:通过`org.quartz.Scheduler`的`scheduleJob()`方法,将Job实例和Trigger...

    Quartz定时任务框架学习总结

    Quartz是一款开源的作业调度框架,它为Java应用程序提供了强大的作业调度能力。作为一个专业的IT行业大师,理解并掌握Quartz的使用是至关重要的。本文将深入解析Quartz的核心概念、特性以及如何在实际项目中应用。 ...

    Quartz入门学习(真丶入门)

    1. **创建作业**:首先,你需要创建一个实现了`org.quartz.Job`接口的类,这个类就是你的任务逻辑。在`execute()`方法中编写实际的业务代码。 2. **定义触发器**:接着,定义一个触发器,设置执行时间。例如,你...

    Quartz

    ### Java框架介绍: Quartz从入门到进阶 ...无论是对于初学者还是有经验的开发者来说,Quartz都是一个值得深入学习和使用的工具。通过对Quartz的学习和实践,可以大大提高开发效率并为项目带来更高的稳定性和可靠性。

Global site tag (gtag.js) - Google Analytics