1.背景

在企业应用中,经常有一些定时任务需要执行:

1)生成月报,季报和年报,这时候可以使用数据库的作业运行存储过程来实现;

2)定期查询哪些待审核单据即将过期,并给待审核人发送提醒邮件,可以使用powershell脚本来做一个发送邮件的功能,在数据库的作业中来调用。

...

诸如此类的很多需求,通常会做一个windows service 运行在应用服务器上,定时执行去执行一些任务。这时候如果任务比较多,还需要个性化定制触发器,业务逻辑可能就比较复杂了,协调各个任务之间的关系就不那么简单了。为了解决这个问题,Quartz就诞生了,这是一个企业级的任务调度框架。下面就看看Quartz的一些情况。

2.概要

1)官网:http://www.quartz-scheduler.org/

从下载到文档到Demo,一应俱全,官网是最好的学习资源(英文不太好的同学请自行脑补...)

2.Demo

1)新建java工程

导入如下jar包...

log4j.xml可以直接用example里面的配置

2)JobTest.java

package com.wicresoft.demo;import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;public class JobTest implements Job{//Instances of Job must have a public no-argument constructor  public JobTest(){  }  public void execute(JobExecutionContext arg0) throws JobExecutionException {  //print the job instance,all instance are not the same System.out.println("My task is to call current Job:" + this + " refresh screen!!!");  }
}

3)QuartzTest.java

package com.wicresoft.demo;import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
//import org.quartz.JobBuilder.*;
//import org.quartz.TriggerBuilder.*;
//import org.quartz.Trigger;
//import org.quartz.SimpleScheduleBuilder.*;public class QuartzTest {public static void main(String[] args) {try {// Grab the Scheduler instance from the FactoryScheduler scheduler = StdSchedulerFactory.getDefaultScheduler();// define the job and tie it to our HelloJob classJobDetail job = JobBuilder.newJob(JobTest.class).withIdentity("job1", "group1").build();// Trigger the job to run now, and then repeat every 2 secondsTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startNow().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();// Tell quartz to schedule the job using our triggerscheduler.scheduleJob(job, trigger);// and start it offscheduler.start();// mail thread sleep 2 seconds//System.out.println(Thread.currentThread().getName());Thread.sleep(30 * 1000);scheduler.shutdown();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SchedulerException se) {se.printStackTrace();}}
}

PS:

1.Quartz 已经有了.NET版本,使用起来基本与java一致,这里推荐lee576的一篇关于.net Quartz的介绍:

http://blog.csdn.net/lee576/article/details/46048927

Quartz - Java 任务调度相关推荐

  1. Java任务调度之Quartz快速入门

    首先所谓的任务调度指的是软件系统在从某个时间节点开始,以固定的频率,除去特定的某些时间段,定期执行某项任务,比如可以在某个夜深人静的时候做一些大批量的文件传输.备份等耗费极大资源的工作,那么通过这个概 ...

  2. 项目ITP(五) spring4.0 整合 Quartz 实现任务调度

    2014-05-16 22:51 by Jeff Li 前言 系列文章:[传送门] 项目需求: 二维码推送到一体机上,给学生签到扫描用. 然后须要的是 上课前20分钟 .幸好在帮带我的学长做 p2p ...

  3. 【Quartz】任务调度

    Quartz任务调度 一.Quartz概念 二.Quartz运行环境 三.Quartz设计模式 四.Quartz学习的核心概念 五.Quartz的体系结构 六.Quartz的几个常用API 七.Qua ...

  4. 【Quartz】任务调度Quartz从入门到入土(史上最详细)

    背景 在项目开发过程中,有时候需要利用定时任务技术来完成某些周期性的任务,比如,定时下载对账单.定时进行数据对比.转换,数据定时入库等等.在最开始的时候部分开发人员习惯直接在项目中硬编码一些定时器. ...

  5. Spring+Quartz定时任务调度

    Spring+Quartz定时任务调度   2011/5 zqhxuyuan@gmail.com 参考文章: http://www.iteye.com/topic/399980 ­ org.sprin ...

  6. ASP.NET MVC5 实现基于Quartz.NET任务调度

    ASP.NET MVC5 实现基于Quartz.NET任务调度 工作之余.技术?.记是不可能记住的. 只有写点东西 才能维持得了生活这样子的.好早就像写一篇关于任务调度的文章.终究是太懒了 一.Qua ...

  7. Java任务调度框架Quartz

    转自:http://blog.csdn.net/yuebinghaoyuan/article/details/9045471 介绍 Quartz is a full-featured, open so ...

  8. quartz java spring_从零开始学 Java - Spring 使用 Quartz 任务调度定时器

    生活的味道 睁开眼看一看窗外的阳光,伸一个懒腰,拿起放在床一旁的水白开水,甜甜的味道,晃着尾巴东张西望的猫猫,在窗台上舞蹈.你向生活微笑,生活也向你微笑. 请你不要询问我的未来,这有些可笑.你问我你是 ...

  9. (转)Java任务调度框架Quartz入门教程指南(三)任务调度框架Quartz实例详解深入理解Scheduler,Job,Trigger,JobDetail...

    http://blog.csdn.net/zixiao217/article/details/53053598 首先给一个简明扼要的理解: Scheduler 调度程序-任务执行计划表,只有安排进执行 ...

最新文章

  1. 用bert来训练quoras question pairs的代码仓
  2. Zxing二维码开源项目
  3. 如何实现Word、PDF,TXT文件的全文内容检索?
  4. 客户端与服务器端地址的区别
  5. chromebook刷机_如何从Chromebook上的APK侧面加载Android应用
  6. db2 程序连接字符串
  7. arcgis js平滑线工具_Arcgis中文字体、平滑线插件使用说明
  8. 华为设备配置VRRP冗余链路 防止单点故障
  9. 二元函数泰勒公式例题_泰勒公式与函数展开的操作方法
  10. python自动更新excel数据_如何更新Excel数据?(刷新所有查询)
  11. C语言学习笔记——(三)静态开辟内存和动态开辟内存
  12. Win7 VNC远程连接Centos桌面
  13. 机器学习之GD、SGD
  14. OpenSSL密码库算法笔记——第 2.2.4章 Barrett模数与相关函数
  15. 【Python上分之路】第一篇:Python是什么?
  16. 面向订单生产型电子制造企业,如何快速响应客户?
  17. 数据结构-树结构-哈夫曼应用-修理牧场
  18. vue内使用 cytoscape(数据可视化)
  19. R语言怎么比较两个模型C指数,手把手教你用R语言评价临床预测模型,一文就够(附代码)...
  20. pycharm找不到安装包解决方法

热门文章

  1. 《蔡康永的情商课》重点摘录
  2. 一个屌丝程序员的青春(三六六)
  3. Windows 10 使用命令行格式化磁盘/U盘
  4. 用迭代器指针改变map容器的值
  5. 【Python绘图】Python画动态条形图(横向直方图)
  6. 【解决报错原因分析】画图plt.contourf(X,Y,Z)报错TypeError: unhashable type: ‘numpy.ndarray‘(含详细示例讲解)
  7. 疫苗预约系统,疫苗接种管理系统,疫苗预约管理系统毕设作品
  8. PHP - preg_split详解
  9. [Android] 代码获取手机系统类型(小米MIUI、华为EMUI、魅族FLYME)
  10. python画简单花的代码_Python竟能画这么漂亮的花,帅呆了(代码分享)