quartz是一个开源的作业调度框架,当然,java可以使用Timer来实现简单任务调度的功能,但Timer是单线程的设计方案,使得一个任务延迟会影响到其他的任务。java也可以使用ScheduledExecutor+Calendar 使用复杂的调度功能,但是这会相应的增加复杂度,例如计算一个精确到天的时间便要使用时间组合来计算。
quartz与java本身的任务调度相比可以满足更加复杂的任务调度需求,quartz提供了一个Job、Tigger和Scheduler设计。
 
作业部分:
一个要被quartz框架调度的作业要实现了Job接口。
一个最简单的Job实现如下:
package cn.edu.gdut.quartz;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; public class HelloQuartz implements Job { public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("job test");
}
}
 
当然,上面的实现部分可以实现不同的业务,可以在JobExecutionContext 中传递参数,也可以通过JobExecutionContext 来获取一些关于作业调度的一些信息。
定义了相应的Job后,我们就可以将Job加入到一个JobDetail实例中了,Job完成相应业务的工作,JobDetail则保持了与此Job相关的一些信息,例如Job实例名称,分组,描述,监听器,数据,是否是有状态的等待。
 
触发器部分:
Tigger部分,quartz提供了4个实现和TriggerUtils工具类,满足不同的Tigger要求。以CronTrigger为例,CronTrigger提供了几个不同的构造方法,可以传入时间、Job的信息和cron表达式等,
关于Cron表达式可以猛戳连接http://biaoming.iteye.com/blog/39532
 
//每5秒调度一次 
String cronExpression="*/5 * * * * ?";
Trigger trigger=new CronTrigger("cronTrigger",Scheduler.DEFAULT_GROUP,cronExpression);
一个简单的触发器就完成了,当然,可以选择更加丰富的日期选项来实现更丰富的触发时间点。
TriggerUtils工具类也可以完成此任务,用它可以很方便生产一些Trigger
Trigger trigger = TriggerUtils.makeSecondlyTrigger(5);
trigger.setName("cronTrigger");
trigger.setStartTime(new Date());
以上是一个简单的触发器。
 
调度器部分:
与TriggerUtils类似quartz提供了一个调度器工厂来获取调度器,获取到一个调度器后,我们只有JobDetail和Trigger交给调度器就好了
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
// 对JobDetail和Trigger实例注册到Schedule实例中
scheduler.scheduleJob(jobDetail, trigger);
// 启动调度器
scheduler.start();
try {
// 当前线程等待20秒
Thread.sleep(20L * 1000L);
} catch (Exception e) {
e.printStackTrace();
}
// 关闭调度器
scheduler.shutdown(true);

一个作业的调度器完成了。

至于要怎样调度,那就交给quartz吧。
 

java任务调度quartz框架的小例子的更多相关文章

  1. java 多线程——quartz 定时调度的例子

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

  2. java操作xml的一个小例子

    最近两天公司事比较多,这两天自己主要跟xml打交道,今天更一下用java操作xml的一个小例子. 原来自己操作xml一直用这个包:xstream-1.4.2.jar.然后用注解的方式,很方便,自己只要 ...

  3. java连接mysql的一个小例子

    想要用java 连接数据库,需要在classpath中加上jdbc的jar包路径 在eclipse中,Project的properties里面的java build path里面添加引用 连接成功的一 ...

  4. Java任务调度开源框架quartz学习

    一.quartz学习 Java框架介绍:Quartz从入门到进阶 http://edu.yesky.com/edupxpt/233/2209233.shtml 1.例子:http://javacraz ...

  5. java servlet+jquery+json学习小例子

    引入JSON的jar包: 注意,如果包不全,页面请求servlet时,jquery ajax会返回error:function 弹出error occured!!! HTML Code: <%@ ...

  6. 关于java赋值运算的一个小例子

    直接贴代码,这个也是做题目中遇见的,觉得很好奇,查了一波,然后自己编写代码看了一下,果真如此,哈哈哈...... public class 关于Boolean的赋值运算 { public static ...

  7. java入门---简介&简单输出小例子&开发前准备

        Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式推出.J ...

  8. java内存被释放的小例子

    先贴代码: StringBuilder dada = null; ; i<; i++){ dada = new StringBuilder(); ; j<; j++){ dada.appe ...

  9. java 多线程——一个定时调度的例子

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

随机推荐

  1. Excel 锁定特定单元格 不允许更改

    1.首先,excel默认所有单元格都是被"锁定"的--当"锁定单元格"按钮被激活时. 因此,第一步,选择所有单元格,设置单元格格式,取消"保护&quo ...

  2. TypePerf.exe使用命令查找计数器

    TypePerf.exe是一个命令行工具,包括把Windows操作系统的性能计数器数据输出到命令窗口或写入到支持该功能的日志文件格式中. 通过以下两个参数获取计数器信息: -q [object] 列出 ...

  3. CentOS6.3 编译安装LAMP(4):编译安装 PHP5.2.17

    所需源码包: /usr/local/src/PHP-5.2.17/libmcrypt-2.5.8.tar.gz /usr/local/src/PHP-5.2.17/mhash-0.9.9.9.tar. ...

  4. 如何让Linux定时任务crond以秒为单位执行(如每隔3秒)

    需要用到Shell脚本每隔3秒钟去监控一个软件进程的运行状态,发现crond似乎只支持到分,不知道秒,怎么办呢? 第一种方法: 当然首先想到的是写一个触发的脚本,在触发脚本中使用死循环来解决此问题,如 ...

  5. Daily Scrum Meeting ——FirstDay

    一.Daily Scrum Meeting照片 二.Burndown Chart 三.项目进展 1.介绍在github上发布的issues 根据MVC三层模型,我们主要发布的是V层以及M层,C层将根据 ...

  6. 【Alpha】Daily Scrum Meeting第一次

    一.本次Daily Scrum Meeting主要内容 代码任务细分 服务器搭建 每个人时间分配及安排 二.项目进展 学号尾数 今天做的任务 任务完成度 明天要做的任务 612 写代码框架 30% 主 ...

  7. java基础 集合类

    java集合类主要有以下集中: List结构的集合类: ArrayList类, LinkedList类, Vector类, Stack类 Map结构的集合类: HashMap类,Hashtable类 ...

  8. iOS界面跳转的一些优化方案

    原文地址: http://blog.startry.com/2016/02/14/Think-Of-UIViewController-Switch/ iOS界面跳转的一些优化方案 App应用程序开发, ...

  9. [BZOJ2391]Cirno的忧郁

    [BZOJ2391]Cirno的忧郁 试题描述 Cirno闲着无事的时候喜欢冰冻青蛙. Cirno每次从雾之湖中固定的n个结点中选出一些点构成一个简单多边形,Cirno运用自己的能力能将此多边形内所有 ...

  10. Qt: 时钟Demo

    其实是一个很简单的Demo,可以编译了拿NSIS打包.最近在做富文本编辑器和补C++不记得的东西吧,项目遥遥无期. //clock.pro #----------------------------- ...