Quartz 之入门示例
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。
环境:XP+Myeclipse6.5+JDK1.6
quartz官网:http://www.quartz-scheduler.org/
参考资料
1 Quartz任务调度快速入门
http://www.blogjava.net/baoyaer/articles/155645.html
2 Quartz
http://ttaale.iteye.com/blog/630202
http://java-lyvee.iteye.com/blog/817110
3 Quartz Job Scheduling Framework
http://hi.baidu.com/recoder/blog/item/ec7642f1db2b68a7a40f52f3.html
4 Quartz学习
http://blog.csdn.net/bubei/article/details/2108778
5 Quartz学习资料链接
http://topmanopensource.iteye.com/blog/search?query=quartz
特别说明:如无特别说明,所有有关quartz示例基于官方示例
一 Quarta介绍
1 Quartz是什么
Quartz就是一个纯 Java 实现的作业调度工具,相当于数据库中的 Job、Windows 的计划任务、Unix/Linux 下的 Cron,但 Quartz 可以把排程控制的更精细.
2 Quartz 框架的发展历程
Quartz项目是由James House创立的,在1998年就有该框架最初的构思,包括作业队列的概念,使用线程池来处理作业,在2001年春天在SourceForge 上创立了该项目.
Quartz 的目录结构和内容
Docs Quartz 框架的JavaDoc Api 说明文档
Examples 多方面使用 Quartz 的例子
Lib Quartz 使用到的第三方包
quartz-jboss 提供了特定于 JBoss 特性的源代码
quartz-oracle 提供了特定于 Oracle 特性的源代码
quartz-weblogic 提供了特定于 WebLogic 特性的源代码
二 Quartz的应用场景
场景 #1: 邮件提醒和告警
场景 #2: 执行文件传输操作
场景 #3: 创建销售报表
三 Quarta的安装及使用
官网:http://www.quartz-scheduler.org/下载最新的文件,需要你注册才能下载!也可在附件中下载
四 了解Quartz体系结构
Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述
Quartz 调度包的两个基本单元是作业和触发器。作业是能够调度的可执行任务,触发器提供了对作业的调度.
调度器:调度器用于将与作业触发器关联,一个作业可关联多个触发器,这样每个触发器被可以触发的作业执行;一个触发器可用于控制多个作业,触发触发时,
全部作业将获得调度。Quartz的调度器由Scheduler接口体现.
作业:只需实现org.quartz.job接口即可.Job接口包含一个方法 execute(),execute方法体是被调度的作业体。一旦实现Job接口和execute()方法,
Quartz确定作业运作的时候,它将调用 execute()方法体。
触发器:有SimpleTrigger和CronTrigger两种类型
五 工程图片
六 具体代码如下
Job:是一个接口只有一个方法void execute(JobExecutionContext context),开发者实现该接口定义运行任务,JobExecutionContext类提供了调度上下文的各种信息。Job运行时的信息保存在JobDataMap实例中
1 定义一个作业类: HelloJob.java
Java代码
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; public class HelloJob implements Job { private static Logger _log = LoggerFactory.getLogger(HelloJob.class); public HelloJob() { } public void execute(JobExecutionContext context) throws JobExecutionException { _log.error(" 咫尺天涯: " + new Date()); }
}
2 测试类
Java代码
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import static org.quartz.DateBuilder.*;
import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SimpleExample { private static Logger log = LoggerFactory.getLogger(SimpleExample.class); public void run() throws Exception { // 通过SchedulerFactory获取一个调度器实例 SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler(); Date runTime = evenMinuteDate(new Date()); // 通过过JobDetail封装HelloJob,同时指定Job在Scheduler中所属组及名称,这里,组名为group1,而名称为job1。 JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build(); // 创建一个SimpleTrigger实例,指定该Trigger在Scheduler中所属组及名称。 // 接着设置调度的时间规则.当前时间运行 Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build(); // 注册并进行调度 sched.scheduleJob(job, trigger); // 启动调度器 sched.start(); try { //当前线程等待65秒 Thread.sleep(65L * 1000L); } catch (Exception e) { } //调度器停止运行 sched.shutdown(true); log.error("结束运行。。。。"); } public static void main(String[] args) throws Exception { SimpleExample example = new SimpleExample(); example.run(); }
}
因为上官网下载麻烦,这里就直接上传了,方便大家下载!目录结构如下:
Quartz所用到的jar
上传Quartz文件如下
官方文档见附件:quartz-docs.7z
下载地址:http://liuzidong.iteye.com/blog/1118992
转自:http://liuzidong.iteye.com/blog/1118992
Quartz 之入门示例相关推荐
- Quartz(1)----入门示例
1.什么是Quartz? Quartz是一个完全由java编写的开源作业调度框架. 2.Quartz是用来做什么的? Quartz是一个任务调度框架,比如你会遇到如下问题: 1).每月25号,信用卡自 ...
- [WCF编程]1.WCF入门示例
一.WCF是什么? Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,整合了原有的windows通讯的 .net Remotin ...
- BizTalk 2006 简单入门示例程序(附源项目文件下载)
BizTalk 2006 简单入门示例程序(附源项目文件下载) 为初学BizTalk Server 2006的开发人员,提供一个简单入门的示例程序,包括一个Receive Port.Send Port ...
- Apache Camel框架入门示例
2019独角兽企业重金招聘Python工程师标准>>> Apache Camel是Apache基金会下的一个开源项目,它是一个基于规则路由和中介引擎,提供企业集成模式的Java对象的 ...
- OUYA游戏开发核心技术剖析OUYA游戏入门示例——StarterKit
第1章 OUYA游戏入门示例--StarterKit StarterKit是一个多场景的游戏示例,也是OUYA官方推荐给入门开发者分析的第一个完整游戏示例.本章会对StarterKit做详细介绍,包 ...
- python爬虫入门实例-终于领会python爬虫入门示例
随着人工智能 大数据的火热 Python成为了广大科学家和普通大众的学习语言.在学习Python的过程中 有很多人感到迷茫 不知道自己该从什么地方入手,今天我们就来说一些新手该如何学习Python编程 ...
- 【Unity 3D 游戏开发】Unity3D 入门 - 工作区域介绍 与 入门示例
一. 工作区域详解 1. Scence视图 (场景设计面板) scence视图简介 : 展示创建的游戏对象, 可以对所有的游戏对象进行 移动, 操作 和 放置; -- 示例 : 创建一个球体, 控制摄 ...
- Castle Active Record for .NET2.0快速入门示例
一.创建Web工程 创建一个Web站点或者Web应用程序,添加对Castle.ActiveRecord.dll的引用. 二.创建需要持久化的业务实体 在.NET2.0下,由于引入了泛型,创建业务实体比 ...
- Spring MVC 入门示例讲解
在本例中,我们将使用Spring MVC框架构建一个入门级web应用程序.Spring MVC 是Spring框架最重要的的模块之一.它以强大的Spring IoC容器为基础,并充分利用容器的特性来简 ...
最新文章
- 解决 从数据库中读出 的文本中的回车无法在 jsp网页上起作用的问题
- 华为亮度自动调节没了_一加8T不止有8192级自动亮度调节 刘作虎在线种草
- Ajax-goahead局部刷新页面
- C++Pascal‘s Triangle杨辉三角的实现算法
- 深度有趣 | 01 前言
- windows 10下载链接
- C#语法——await与async的正确打开方式
- (找循环节)Number Sequence
- deployment:声明式的升级应用
- Vue之表单rules
- 【验证码识别】基于matlab CNN卷积神经网络验证码识别【含Matlab源码 098期】
- 考研_数学二_中值定理_证明题_辅助函数的设法
- Adobe Premiere(pr)2021 安装教程【64位】
- JavaScript第6章上机练习2(使用jQuery美化英雄联盟简介页)上机练习3(制作非缘勿扰页面特效)
- matlab直方图概率密度图,histeq从用法到原理——Matlab直方图均衡化函数
- C中计算梯形的面积(area)
- DELL服务器 ubuntu系统 全新硬盘识别不到问题解决及对硬盘做GPT分区
- 现实版“武大郎和潘金莲”的婚姻情感纠葛
- Java RestTemplate 增加SSL证书
- jmeter 接口测试 签名_Jmeter之API接口签名验证测试
热门文章
- Razor语法和Razor引擎大全
- 什么是runtime?
- 【JS 逆向百例】反混淆入门,某鹏教育 JS 混淆还原
- Python + GitHub Actions 实现 CSDN 自动签到与抽奖(非 selenium 版本)
- 【Python学习】 - plt画图时,添加标题的中英文问题
- 【CodeForces - 520B】Two Buttons (bfs或dp或时光倒流,trick)
- 【CodeForces - 616D 】Longest k-Good Segment (twopointer,尺取)
- mysql 7天自动拒单功能,mysql查询最近7天的数据,没有数据自动补0
- java中jframe不存在怎么办,java – 设置JFrame背景,为什么这不起作用?
- centos写mysql光标移到上一行_python操作mysql——使用pymysql库