Quartz-2.2.x 入门
来源:互联网 发布:linux重启网卡失败 编辑:程序博客网 时间:2024/06/07 18:02
介绍
Quartz是一个开源的计划任务工具库。
- 官方网站:Quartz-2.2.x文档
- 源码下载:Downloads
安装
如果是直接下载jar包
将quartz-2.2.x.jar包放到classpath目录下即可。
如果是maven项目中引用,则坐标如下:
<!-- 主要实现包 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency> <!-- [可选]官方实现Job的工具包 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz-jobs</artifactId> <version>2.2.1</version> </dependency>
使用入门
基本概念
结构图示
Hello world应用
- 关于内部类的说明,请参考《内部类的一些事》
- 本例为了说明Quartz的TriggerBuilder的withSchedule方法,所以把生成Trigger部分拆分成两段,按照官网上的例子,其实可以串联方式直接build。
import org.quartz.Job;import org.quartz.JobBuilder;import org.quartz.JobDetail;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;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 HelloWorld { // 如果使用内部类必须是静态内部类方式实现Job接口, // 否则Quartz反射生成不了Job实例 public static class NestedJob implements Job{ // 实现execute接口,任务调度时触发以下方法 public void execute(JobExecutionContext ctx) throws JobExecutionException { // TODO Auto-generated method stub try { // 获取本次触发的实例id System.out.println("action " + ctx.getFireInstanceId() + " begin:" + ctx.getFireTime()); Thread.sleep(4 * 1000L); System.out.println("action " + ctx.getFireInstanceId() + " end:" + ctx.getFireTime()); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void main(String[] args) { // 1.实例化工厂类 SchedulerFactory sf = new StdSchedulerFactory(); try { // 2.得到一个StdScheduler实例,创建线程池 Scheduler s = sf.getScheduler(); // 标识开始 s.start(); // 3.通过JobBuilder工厂,生成JobDetail并绑定NestedJob类 JobDetail jd = JobBuilder.newJob(NestedJob.class) .withIdentity("myjob", "mygroup").build(); // 4.定义触发器的计划任务,从“现在”开始计划 TriggerBuilder<Trigger> tb = TriggerBuilder.newTrigger().startNow(); // 每隔3s执行一次,并一直循环 Trigger t = tb .withSchedule( SimpleScheduleBuilder.repeatSecondlyForever(3)) .withIdentity("mytrigger", "mygroup").build(); // 将任务和触发器注册到计划任务容器中 s.scheduleJob(jd, t); // 本例需要暂停主线程,让任务线程跑起来 Thread.sleep(10 * 1000L); // 强制停止所有任务线程,删除所有注册的任务信息 s.shutdown(); } catch (SchedulerException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
运行结果
action 1464458138847 begin:Sun May 29 01:55:39 CST 2016
action 1464458138848 begin:Sun May 29 01:55:41 CST 2016
action 1464458138847 end:Sun May 29 01:55:39 CST 2016
action 1464458138849 begin:Sun May 29 01:55:44 CST 2016
action 1464458138848 end:Sun May 29 01:55:41 CST 2016
…
0 0
- Quartz-2.2.x 入门
- Quartz-任务调度概述及Quartz(2.2.X)快速入门
- quartz-2.2.x 快速入门 (1)
- Quartz 入门
- Quartz入门
- quartz入门
- Quartz入门
- Quartz入门
- Quartz入门
- Quartz入门
- Quartz入门
- Quartz入门
- 【Quartz】Quartz任务调度入门
- Quartz(01) Quartz快速入门
- Spring3.x配置quartz
- Quartz的简单使用,基于1.X(一)【入门及CronTrigger】
- Quartz 框架 教程(中文版)2.2.x 之第一课 开始使用Quartz框架
- Quartz 框架 教程(中文版)2.2.x 之第二课 Quartz API,Jobs和Triggers简介
- 关于ARGB_8888、ALPHA_8、ARGB_4444、RGB_565的理解
- 两个字符串比较求最优算法
- Android中的线程
- spark 数据类型(Data Types)
- 企业移动应用开发管理之浅谈
- Quartz-2.2.x 入门
- 深入理解log机制
- MVC模式的增删改查(以注册为例)
- Android开发中如何解决加载大图片时内存溢出的问题
- Java语言一些记录
- 在Visual Studio 2010中使用Visual Leak Detector
- 机器学习中几种常见优化方法总结
- 使用 JUnit 进行容器内测试(常用的两种测试方法)
- Foundation框架—数组 NSArray -NSMutableArray