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. 微信电脑版-微信for windows客户端发布

    12月份微信Windows版客户端1.0 Alpha推出,昨天微信for windows 1.0客户端(测试版)发布更新,超过三亿人使用的聊天应用,现在登录Windows桌面.你可以在Windows上 ...

  2. SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)

    1.前言 使用框架都是较新的版本: Spring 4.0.2 RELEASE Spring MVC 4.0.2 RELEASE MyBatis 3.2.6 2.Maven引入需要的JAR包 2.1设置 ...

  3. codeblock 编译googletest

    1.cmake安装 2.codeblock  16.01 3.Google Test 1.7.0 4.PATH路径添加(重启电脑,保证设置的PATH路径生效) 5.python安装 6.编译安装:   ...

  4. jQuery-H5-css3转盘抽奖-遁地龙卷风

    (-1)写在前面 这个idea不是我的,首先向这位前辈致敬. 我用的是chrome49, jquery3.0. 完整的程序案例在我的百度云盘http://pan.baidu.com/s/1jI2QSn ...

  5. Java MySql 批量插入数据库addBatch

    //addBatch批量插入数据库 public static void insertCommentToMySql(Set<String> commentList) { Iterator& ...

  6. [Linux]系统调用理解(1)

    本文是Linux系统调用专栏系列文章的第一篇,对Linux系统调用的定义.基本原理.使用方法和注意事项大概作了一个介绍,以便读者对Linux系统调用建立一个大致的印象. 什么是系统调用? Linux内 ...

  7. Spark集群部署

    Spark是通用的基于内存计算的大数据框架,可以和hadoop生态系统很好的兼容,以下来部署Spark集群 集群环境:3节点 Master:bigdata1 Slaves:bigdata2,bigda ...

  8. java 处理XML(dom4j-1.6.1)

    java 处理XML(dom4j-1.6.1) Java 处理xml有很多框架,今天使用主流框架dom4j-1.6.1 下载地址:http://www.dom4j.org/dom4j-1.6.1/ D ...

  9. 同步异步,阻塞非阻塞 和nginx的IO模型

    同步与异步 同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication).所谓同步,就是在发出一个*调用*时,在没有得 ...

  10. MFC中CListCtrl控件的使用方法

    定义一个派生类CViewList 派生于CListCtrl 在要包含该控件的类(CView)中定义一个CViewList类型的变量 CViewList m_wndListView; 在CView响应的 ...