Java任务调度框架Quartz
转自:http://blog.csdn.net/yuebinghaoyuan/article/details/9045471
public abstract interface Job
{
public abstract void execute(JobExecutionContext paramJobExecutionContext)
throws JobExecutionException;
}
- package com.test;
- import java.util.Date;
- import org.quartz.Job;
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
- /**
- * 需要执行的任务
- * @author lhy
- *
- */
- public class MyJob implements Job {
- @Override
- //把要执行的操作,写在execute方法中
- public void execute(JobExecutionContext arg0) throws JobExecutionException {
- System.out.println("测试Quartz"+new Date());
- }
- }
使用SimpleTrigger触发器
- package com.test;
- import java.util.Date;
- import org.quartz.JobDetail;
- import org.quartz.Scheduler;
- import org.quartz.SchedulerException;
- import org.quartz.SchedulerFactory;
- import org.quartz.SimpleTrigger;
- import org.quartz.impl.StdSchedulerFactory;
- /**
- * 调用任务的类
- * @author lhy
- *
- */
- public class SchedulerTest {
- public static void main(String[] args) {
- //通过schedulerFactory获取一个调度器
- SchedulerFactory schedulerfactory=new StdSchedulerFactory();
- Scheduler scheduler=null;
- try{
- // 通过schedulerFactory获取一个调度器
- scheduler=schedulerfactory.getScheduler();
- // 创建jobDetail实例,绑定Job实现类
- // 指明job的名称,所在组的名称,以及绑定job类
- JobDetail jobDetail=new JobDetail("job1", "jgroup1", MyJob.class);
- // 定义调度触发规则,比如每1秒运行一次,共运行8次
- SimpleTrigger simpleTrigger=new SimpleTrigger("simpleTrigger","triggerGroup");
- // 马上启动
- simpleTrigger.setStartTime(new Date());
- // 间隔时间
- simpleTrigger.setRepeatInterval(1000);
- // 运行次数
- simpleTrigger.setRepeatCount(8);
- // 把作业和触发器注册到任务调度中
- scheduler.scheduleJob(jobDetail, simpleTrigger);
- // 启动调度
- scheduler.start();
- }catch(SchedulerException e){
- e.printStackTrace();
- }
- }
- }
若使用CornTrigger触发器:
- package com.test;
- import java.util.Date;
- import org.quartz.CronTrigger;
- import org.quartz.JobDetail;
- import org.quartz.Scheduler;
- import org.quartz.SchedulerException;
- import org.quartz.SchedulerFactory;
- import org.quartz.SimpleTrigger;
- import org.quartz.impl.StdSchedulerFactory;
- /**
- * 调用任务的类
- * @author lhy
- *
- */
- public class CronTriggerTest {
- public static void main(String[] args) {
- //通过schedulerFactory获取一个调度器
- SchedulerFactory schedulerfactory=new StdSchedulerFactory();
- Scheduler scheduler=null;
- try{
- // 通过schedulerFactory获取一个调度器
- scheduler=schedulerfactory.getScheduler();
- // 创建jobDetail实例,绑定Job实现类
- // 指明job的名称,所在组的名称,以及绑定job类
- JobDetail jobDetail=new JobDetail("job1", "jgroup1", MyJob.class);
- // 定义调度触发规则,每天上午10:15执行
- CronTrigger cornTrigger=new CronTrigger("cronTrigger","triggerGroup");
- // 执行规则表达式
- cornTrigger.setCronExpression("0 15 10 * * ? *");
- // 把作业和触发器注册到任务调度中
- scheduler.scheduleJob(jobDetail, cornTrigger);
- // 启动调度
- scheduler.start();
- }catch(Exception e){
- e.printStackTrace();
- }
- }
- }
对于2.0.2jar包如下:
- package com.test;
- import java.util.Date;
- import org.quartz.CronScheduleBuilder;
- 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;
- /**
- * 调用任务的类
- * @author lhy
- *
- */
- public class SchedulerTest {
- public static void main(String[] args) {
- //通过schedulerFactory获取一个调度器
- SchedulerFactory schedulerfactory=new StdSchedulerFactory();
- Scheduler scheduler=null;
- try{
- // 通过schedulerFactory获取一个调度器
- scheduler=schedulerfactory.getScheduler();
- // 创建jobDetail实例,绑定Job实现类
- // 指明job的名称,所在组的名称,以及绑定job类
- JobDetail job=JobBuilder.newJob(MyJob.class).withIdentity("job1", "jgroup1").build();
- // 定义调度触发规则
- // 使用simpleTrigger规则
- // Trigger trigger=TriggerBuilder.newTrigger().withIdentity("simpleTrigger", "triggerGroup")
- // .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(1).withRepeatCount(8))
- // .startNow().build();
- // 使用cornTrigger规则 每天10点42分
- Trigger trigger=TriggerBuilder.newTrigger().withIdentity("simpleTrigger", "triggerGroup")
- .withSchedule(CronScheduleBuilder.cronSchedule("0 42 10 * * ? *"))
- .startNow().build();
- // 把作业和触发器注册到任务调度中
- scheduler.scheduleJob(job, trigger);
- // 启动调度
- scheduler.start();
- }catch(Exception e){
- e.printStackTrace();
- }
- }
- }
上述demo下载:1.8版本demo下载
Java任务调度框架Quartz的更多相关文章
- Java任务调度框架Quartz入门
Quartz[kwɔːts]:石英,其框架和名字一样简单朴素又不失魅力,在Java程序界,Quartz大名鼎鼎,很多Java应用几乎都集成或构建了一个定时任务调度系统,Quartz是一个定时任务调度框 ...
- Java任务调度框架Quartz教程实例
介绍: Quartz框架是一个全功能.开源的任务调度服务,可以集成几乎任何的java应用程序—从小的单片机系统到大型的电子商务系统.Quartz可以执行上千上万的任务调度. 核心概念 Quar ...
- Java任务调度框架Quartz教程
一.什么是quartz作业调度? Quartz框架是一个全功能.开源的任务调度服务,可以集成几乎任何的java应用程序—从小的单片机系统到大型的电子商务系统.Quartz可以执行上千上万的任务调度. ...
- (转)Java任务调度框架Quartz入门教程指南(三)任务调度框架Quartz实例详解深入理解Scheduler,Job,Trigger,JobDetail
http://blog.csdn.net/zixiao217/article/details/53053598 首先给一个简明扼要的理解: Scheduler 调度程序-任务执行计划表,只有安排进执行 ...
- (转)Java任务调度框架Quartz入门教程指南(四)Quartz任务调度框架之触发器精讲SimpleTrigger和CronTrigger、最详细的Cron表达式范例
http://blog.csdn.net/zixiao217/article/details/53075009 Quartz的主要接口类是Schedule.Job.Trigger,而触发器Trigge ...
- (转)Java任务调度框架Quartz入门教程指南(二) 使用job、trigger、schedule调用定时任务
http://blog.csdn.net/zixiao217/article/details/53044890 读完第一节,我们已经对Quartz有了一个大体的认识,它可以定时帮我们执行一些处理程序, ...
- 通过源码分析Java开源任务调度框架Quartz的主要流程
通过源码分析Java开源任务调度框架Quartz的主要流程 从使用效果.调用链路跟踪.E-R图.循环调度逻辑几个方面分析Quartz. github项目地址: https://github.com/t ...
- 企业级任务调度框架Quartz(1) --企业应用中的任务调度介绍
由于目前的工作内容为建行CLPM批处理业务的设计工作,所以很好的理解批处理所用的任务调度框架Quartz势在必行:为了能够更好的去服务于工作,也 为了提升自己,所以我学习了Quartz Job Sch ...
- Java任务调度框架之分布式调度框架XXL-Job介绍
Java任务调度框架之分布式调度框架XXL-Job介绍及快速入门 调度器使用场景: Java开发中经常会使用到定时任务:比如每月1号凌晨生成上个月的账单.比如每天凌晨1点对上一天的数据进行对账操作 ...
随机推荐
- c++模板类成员的声明和定义
c++模板类成员的声明和定义应该都放在*.h中,有普通类不一样. 如果定义放在*.cpp中,最终链接时,会报方法undefined错误. 参考:http://users.cis.fiu.edu/~we ...
- ubuntu12.04-server版 倒腾
前面的话: 第一份工作,在阿里巴巴干了一年零四个月不到几天,来到百度上海.从运维岗转到开发岗.从前端业务线转到后段数据线,基本上算从头开始,给自己鼓个劲. 进到正题,公司发了笔记本,自己原来那个破笔记 ...
- jquery、js获取table,遍历输出tr中各个td的内容。
首先,依赖jquery.. $('#btntb').click(function(){ $('#tab tr').each(function(i){ // 遍历 tr $(this).children ...
- [Android Pro] activity-alias的使用
activity-alias是android里为了重复使用Activity而设计的. 当在Activity的onCreate()方法里,执行getIntent().getComponent().get ...
- 基于CXF框架下的SOAP Webservice服务端接口开发
最近对webservice 进行入门学习,网上也是找了很多的学习资料.总得感觉就是这了解点,那了解点.感觉不够系统,不够容易入门.差不多断断续续看了一个星期了,今天小有成果,把客户端,服务端都搞定了. ...
- MAC 10.10 开机登录无敌风火轮问题解决方式
查明是第三方输入法引起的问题,我用的是搜狗输入法.所以把搜狗卸载就好了.(注意是卸载,不是单纯的从输入源里移除) 操作的思路是,首先要进入计算机,才干进行操作. 办法是开机进入单机模式,删除苹果一个文 ...
- 使用Adt自带的工具进行Android自己主动化測试(三)
在这个系列的上一篇文章中,我们介绍了MonkeyRunner,并提到假设依据坐标来编写自己主动化脚本的话存在着一定的局限性(点击文末"阅读原文"能够打开这篇文章查看).这篇文章将进 ...
- VS2010调试技巧
最近合作开发,代码已经完成了,但是一调试,错误一大堆,由于是合作开发,不确定是哪层的错误,得一步步得走,很是费时费力,平时调试的技巧用的不多,现在集中调试,结果有些手忙脚乱,效率也很低,所以在网上找了 ...
- go语言string、int、int64互相转换
#string到int int,err:=strconv.Atoi(string) #string到int64 int64, err := strconv.ParseInt(string, 10, 6 ...
- 【Python】Django数据模型、级联删除、级联更新、ER图导出等
在本文中,我们将向读者详细介绍如何在更新和删除父表数据的同时,触发有关子表数据的级联更新和删除操作.您将看到当使用InnoDB表的时候,借助于外键约束就可以轻松搞定这一过程. 一.利用外键约束更新并删 ...