在项目中经常会碰到定时任务,quartz是一款非常优秀的开源框架, 提供了定时任务的支持,还支持任务的持久化,并且提供了对数据库的支持。下面首先对quartz做一个简单介绍,并附上一个小例子。

1、下面是quartz的官网:

http://www.quartz-scheduler.org//,打开网址我们可以看到quartz最新的版本是2.2.3这里我也以此版本作为例子的环境。quartz从2.0版本其做了很大的改变,具体的变化可以自己查阅相关资料,在此不赘述。

2、我这里下载的是quartz-2.2.3-distribution.tar.gz,用解压缩工具解压出来得到如下图的文件目录结构,

docs:quartz的文档信息,包含了和数据库相关的建表sql;

examples:例子;

javadoc:使用java的doc,可以使用jd2chm工具转化为chm格式的文档;

lib:quartz的jar包,包含了使用quartz的所有包(依赖包和quartz的jar包);

licenses:许可文件;

src:quartz的源码;

3、从lib包里我们可以看到quartz的日志系统使用的是slf4j,但是其真正的日志系统是log4j,具体的日志框架描述,可以参看我别的文章。

4、quartz即可以用在java工程中,也可以用在javaweb项目中,这里以javaweb项目为环境做例子。

5、把quartz文件夹下的lib文件夹里的所有jar包放到项目的lib目录下。

6、经过上面的步骤就把quartz引入到了工程中。

下面是具体的例子的说明及代码:

一、首先,要创建一个任务,quartz规定任务必须实现org.quarta.Job接口,此接口就一个方法execute,这个方法就是任务执行的时候允许的方法,具体的业务实现在这个方法里,我这里只进行了简单的打印,

 package com.cn.myScheduler;

 import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
System.out.println("this is my first scheduler!");
} }

二、创建完任务之后,我们还要创建一个包含任务信息的jobDetail,一个管理任务执行的促发器trigger,最后就是调度任务,

 package com.cn.myScheduler;

 import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class TestMyJob {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
//1、获得一个scheduler
SchedulerFactory sf=new StdSchedulerFactory();
Scheduler scheduler =sf.getScheduler();
//2、获得一个jobDetail
JobDetail job = JobBuilder.newJob(MyJob.class)
.withIdentity("myJob")
.build(); //3、获得一个trigger
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(40)
.withRepeatCount(10))
.build();
//4、把任务和触发器放到scheduler中
scheduler.scheduleJob(job, trigger);
//5、开始任务调度
scheduler.start();
}
catch(SchedulerException e){
e.printStackTrace();
}
} }

注释1:创建一个scheduler,scheduler负责所有任务的调度。

注释2:创建一个包含任务信息的jobDetail,指定任务的实现类为MyJob.class,使用withIdentity方法指定任务名称,还可以用第二个参数指定任务的组名

注释3:创建一个任务促发器,指定了促发器的名称“trigger1”和促发器的组名“group1”;设置了促发的时间为当前促发,且每隔40S执行一次,一共执行10次

注释4:把jobDetail和trigger放到scheduler中

注释5:启动scheduler

运行程序可以看到程序的输出。

以上就是一个简单的quartz定时任务。

有关quartz的内容会持续更新!

谢谢!

quartz使用(一)的更多相关文章

  1. 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)

    很多的软件项目中都会使用到定时任务.定时轮询数据库同步,定时邮件通知等功能..NET Framework具有“内置”定时器功能,通过System.Timers.Timer类.在使用Timer类需要面对 ...

  2. Quartz

    Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中.它提供了巨大的灵 活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度. eg: ja ...

  3. Spring Quartz实现任务调度

    任务调度 在企业级应用中,经常会制定一些"计划任务",即在某个时间点做某件事情 核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作 任务调度涉及多线程并发.线程池维 ...

  4. topshelf和quartz内部分享

    阅读目录: 介绍 基础用法 调试及安装 可选配置 多实例支持及相关资料 quartz.net 上月在公司内部的一次分享,现把PPT及部分交流内容整理成博客. 介绍 topshelf是创建windows ...

  5. Quartz.net持久化与集群部署开发详解

    序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我的罪过. 但是quart.net是经过许多大项 ...

  6. Quartz.net开源作业调度框架使用详解

    前言 quartz.net作业调度框架是伟大组织OpenSymphony开发的quartz scheduler项目的.net延伸移植版本.支持 cron-like表达式,集群,数据库.功能性能强大更不 ...

  7. quartz.net 时间表达式----- Cron表达式详解

    序言 Cron表达式:就是用简单的xxoo符号按照一定的规则,就能把各种时间维度表达的淋漓尽致,无所不在其中,然后在用来做任务调度(定时服务)的quart.net中所认知执行,可想而知这是多么的天衣无 ...

  8. Quartz.NET Windows 服务示例

    想必大家在项目中处理简单的后台持续任务或者定时触发任务的时候均使用 Thread 或者 Task 来完成,但是项目中的这种需求一旦多了的话就得将任务调度引入进来了,那今天就简单的介绍一下 Quartz ...

  9. [Quartz笔记]玩转定时调度

    简介 Quartz是什么? Quartz是一个特性丰富的.开源的作业调度框架.它可以集成到任何Java应用. 使用它,你可以非常轻松的实现定时任务的调度执行. Quartz的应用场景 场景1:提醒和告 ...

  10. 关于Quartz.NET作业调度框架的一点小小的封装,实现伪AOP写LOG功能

    Quartz.NET是一个非常强大的作业调度框架,适用于各种定时执行的业务处理等,类似于WINDOWS自带的任务计划程序,其中运用Cron表达式来实现各种定时触发条件是我认为最为惊喜的地方. Quar ...

随机推荐

  1. jQuery UI--jquery-autohide解读

    // jQuery Autohide v1.0.2 // (c) 2014 Alex Taujenis // MIT License (function($) { return $.fn.autohi ...

  2. CentOS 7 Vmware虚拟机 /root空间不足解决方法(使用gparted live)

    1,关闭虚拟机,编辑虚拟机设置,增加虚拟磁盘的大小,我这里增加10GB 2,连接CDrom到ISO文件(gparted-live-0.19.0-1-i486.iso),使用gparted live启动 ...

  3. php 反射

    一.通过{属性名} 对对象赋值.        $book=new Book();        $propertyName="name";        $propertyVal ...

  4. 关于VR技术和未来发展---转

    原文地址:http://mp.weixin.qq.com/s?__biz=MzA4MTIwNTczMQ==&mid=2651345594&idx=3&sn=2741ab7321 ...

  5. 【干货分享】Google 的设计准则,素材和资源

    在谷歌,他们说, “专注于用户,所有其它的就会水到渠成 ”.他们遵循设计原则,寻求建立让用户惊喜的用户体验.谷歌一直挑战自己,为他们的用户创造一种视觉语言,综合优秀设计的经典原则和创新.谷歌设计规范是 ...

  6. Lo-Dash – 替代 Underscore 的优秀 JS 工具库

    前端开发人员大都喜欢 Underscore,它的工具函数很实用,用法简单.这里给大家推荐另外一个功能更全面的 JavaScript 工具——Lo-Dash,帮助你更好的开发网站和 Web 应用程序. ...

  7. [python]初探socket

    1.什么是socket? Socket中文译作:套接字,但是大家一般约定俗称的都用:socket.我想在解释socket是什么之前,先说它是用来干嘛的:socket是来建立'通信'的基础,建立连接,传 ...

  8. JAVA生成随机数种子的方法

    Java里面有一个随机函数——Random,刚开始只是知道这个函数具有随机取值的作用,于是上网搜索了资料一番,做了一下一些关于Random函数的总结:   Java中存在着两种Random函数: 一. ...

  9. 如何将Mac OS X10.9下的Python2.7升级到最新的Python3.3

    Mac OS X10.9默认带了Python2.7,不过现在Python3.3.3出来了,如果想使用最新版本,赶紧升级下吧.基本步骤如下. 第1步:下载Python3.3 下载地址如下: Python ...

  10. MySQL 备份与还原详解

    相关阅读: MySQL备份和恢复具体实施 http://www.linuxidc.com/Linux/2012-12/76257.htm MySQL备份与恢复的三种方法总结 http://www.li ...