`
hojor
  • 浏览: 109235 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Quartz实现作业调度

    博客分类:
  • java
阅读更多

  上篇文章中提到了“定时装置”可以用来实现图书系统得定时提醒管理员图书到期。这个时候用Timer明显有些不方便。这次为大家推荐一个开源组织(OpenSymphony)做的Quartz,Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs复杂得作业调度。我使用的版本是Quartz 1.6。

  源码如下:

SimpleQuartzJob.java

  package cn.javaoop.dream.quartz;

  import java.io.File;

  import java.io.FileReader;

  import java.io.FileWriter;

  import java.io.IOException;

  import org.quartz.Job;

  import org.quartz.JobExecutionContext;

  import org.quartz.JobExecutionException;

  /**

  * 读取D盘文件将其内容写入C盘文件中

  * @author JavaChaos

  *

  */

  public class SimpleQuartzJob implements Job {

  @Override

  public void execute(JobExecutionContext context)

  throws JobExecutionException {

  System.out.println(context.getTrigger().getName());

  try {

  File file = new File(”D:/test.txt”);

  if (file.canExecute()) {

  FileWriter writer = new FileWriter(”C:/test.txt”);// 写入C盘文件

  FileReader reader = new FileReader(”D:/test.txt”);// 读取D盘文件

  writer.write(reader.read());

  System.out.println(”写入成功”);

  } else {

  System.out.println(”文件不存在”);

  }

  } catch (IOException e) {

  e.printStackTrace();

  }

  }

  }

  SimpleTirggerRunner.java

  package cn.javaoop.dream.quartz;

  import java.util.Date;

  import org.quartz.JobDetail;

  import org.quartz.Scheduler;

  import org.quartz.SchedulerException;

  import org.quartz.SchedulerFactory;

  import org.quartz.SimpleTrigger;

  import org.quartz.impl.StdSchedulerFactory;

  /**

  * 每隔10秒钟检查D盘有无test.txt,如果有则复制到C盘,共执行10次

  *

  * @author JavaChaos

  *

  */

  public class SimpleTirggerRunner {

  public void task() throws SchedulerException {

  // 初始化调度器工厂

  SchedulerFactory schedulerFactory = new StdSchedulerFactory();

  // 初始化一个调度器

  Scheduler scheduler = schedulerFactory.getScheduler();

  // 当前系统时间

  long systemTime = System.currentTimeMillis();

  // JobDetail对象可以认为需要调度得任务

  JobDetail jobDetail = new JobDetail(”jobDetail-s1″,

  ”jobDetailGroup-s1″, SimpleQuartzJob.class);

  // SimpleTrigger对象设置执行的具体事项

  SimpleTrigger simpleTrigger = new SimpleTrigger(”simpleTrigger”,

  ”simpleTriggerGroup”);

  // 设置启动时间

  simpleTrigger.setStartTime(new Date(systemTime));

  // 设置运行时间间隔,1000毫秒为1秒 

 

simpleTrigger.setRepeatInterval(10000);

  // 设置运行次数

  simpleTrigger.setRepeatCount(10);

  // 传入参数

  scheduler.scheduleJob(jobDetail, simpleTrigger);

  // 启动调度

  scheduler.start();

  }

  public static void main(String[] args) {

  try {

  SimpleTirggerRunner runner = new SimpleTirggerRunner();

  runner.task();

  } catch (SchedulerException e) {

  e.printStackTrace();

  }

  }

  }

 

  在这个例子我利用Quartz实现每隔10秒到指定目录下查找某个文件是否存在,如果存在就复制到指定得目录下这一个简单得功能,其实原理和图书到期通知是一样的。

  或许能看出这个例子有一点不好之处就是我指定了具体执行得次数,这样很不方便。如果从这个例子来看很难实现每个星期一得下午一点来进行通知管理员这样的功能。

  下次会介绍一种表达式,这种表达式可以指定具体运行得时间、周期等等。功能很强大,能够满足我们来做一个图书到期这个功能了。

分享到:
评论

相关推荐

    Quartz(作业调度)

    通过合理的配置和设计,我们可以用Quartz实现复杂且可靠的定时任务调度,提升系统的自动化程度和效率。在实际项目中,要充分利用Quartz提供的各种工具和接口,确保任务的稳定运行,同时也要注意性能优化和资源管理。

    quartz开源作业调度框架

    ### quartz开源作业调度框架知识点详解 #### 一、Quartz框架简介 Quartz是一个功能强大的、开源的作业调度框架,完全由Java编写而成。它能够被应用在服务器端的Java应用程序中,帮助开发者轻松地创建并管理定时任务...

    Quartz.net作业调度自定义定时执行任务多任务执行c#

    在"Quartz.net作业调度自定义定时执行任务多任务执行c#"这个主题中,我们将深入探讨如何使用Quartz.NET来实现自定义的定时任务,以及如何处理多任务执行。 首先,我们需要理解Quartz.NET的基本概念。在Quartz.NET中...

    spring-Quartz(作业调度)

    Quartz 是个开放源码项目,提供了丰富的作业调度集。在这篇文章中,软件工程师 Michael Lipton 和IT 架构师 Soobaek Jang 对 Quartz API 进行了介绍,从对框架的一般概述开始,并以一系列展示 Quart 基本特性的代码...

    Quartz - 作业调度框架

    使用Quartz进行作业调度,首先需要创建Job类,这个类实现了`org.quartz.Job`接口,并重写`execute(JobExecutionContext context)`方法,这个方法包含了任务的具体逻辑。然后,需要创建Trigger,设定触发条件。最后,...

    作业调度Quartz.net源代码

    这个“作业调度Quartz.net源代码”文件很可能是包含了Quartz.NET的示例代码或者一个简单的项目,帮助用户理解和学习如何使用Quartz.NET进行作业调度。 Quartz.NET的核心概念包括作业(Job)、触发器(Trigger)和...

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

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

    Quartz作业调度框架

    总体而言,Quartz是一个功能强大且使用灵活的作业调度框架,它提供了一个完整的生态系统,让开发者能够在企业级应用中高效地管理作业调度。通过本文档提供的内容,可以充分了解Quartz作业调度框架的各个方面,包括其...

    学习笔记_Quartz作业调度框架,使用corn表达式

    Quartz作业调度框架是Java开发中的一个强大工具,用于实现定时任务和工作流管理。它以其灵活性、可扩展性和稳定性而被广泛应用。本学习笔记主要围绕Quartz的使用,特别是如何利用corn表达式来设置定时任务。 Quartz...

    Spring+Quartz实现任务调度的小例子

    而Quartz则是一个强大的、开放源码的作业调度库,它可以用来创建、调度和执行计划任务。Quartz可以集成到Spring中,利用Spring的依赖注入和配置能力,使得任务调度更加简洁和易于维护。 **一、Spring与Quartz的集成...

    用 Quartz 进行作业调度

    本篇将深入探讨如何使用Quartz进行作业调度,并结合`QuartzBeginnerExample`这个示例项目来解析其核心概念和使用方法。 首先,我们需要理解Quartz中的基本术语: 1. **Job**(作业):这是要执行的实际任务,是...

    ASP.NET使用Quartz.NET实现定时任务调度

    Quartz.NET则是一个开源的作业调度库,适用于.NET平台,能够帮助开发者在.NET应用中实现复杂的时间驱动任务。结合使用Quartz.NET和TopShelf,我们可以构建一个在Windows服务中运行的定时任务调度系统。 Quartz.NET...

    quartz的分布式调度大致分两种方式实现

    如果需要扩展以支持数千个短期运行(例如1秒)作业,则可以考虑通过使用多个不同的调度程序(包括HA的多个群集调度程序)对作业集进行分区。 调度程序使用集群范围的锁,这种模式会在添加更多节点(超过三个节点 - ...

    quartz作业调度测试

    Quartz是一款开源的作业调度框架,它允许开发者创建、组织和执行...以上是对"quartz作业调度测试"项目的简要解析,通过该项目,你可以深入理解Quartz的使用方式,以及如何在实际项目中实现高效、可靠的定时任务调度。

    Quartz作业调度器

    Quartz作业调度器是Java平台上的一个开源任务调度框架,广泛应用于企业级应用中,用于自动化执行周期性任务。Spring框架提供了对Quartz的集成,使得在Spring应用中使用Quartz变得更加便捷。这个压缩包文件可能包含了...

    Quartz一个开源作业调度框架

    Quartz 是一个强大的开源作业调度框架,主要用于自动化执行任务,如定时发送邮件、执行数据清理、执行批处理等。该框架完全用 Java 编写,兼容 J2SE 和 J2EE 环境,提供了丰富的功能和灵活性,使得开发者能够方便地...

    Quartz一个开源的作业调度框架

    Quartz是一个广泛应用于企业级应用中的开源作业调度框架,它为开发者提供了强大的任务调度功能,使得应用程序能够在预定的时间执行特定的任务。Quartz的核心设计目标是简单易用且可高度扩展,能够满足从小型项目到...

Global site tag (gtag.js) - Google Analytics