- 浏览: 172925 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
dypt58592:
ssssss
Java调用ocx控件以及dll -
wqy110:
PDFBOX ,提示找不到这个类。
PDFBOX 解析PDF -
pipiaha:
回一楼,在myeclipse里找到 Tasks 的view , ...
myeclipse 中 TODO 注释的用法 -
一帆过海:
...
MySql征程之MyManagerLite开发数据库工具下载 -
q420309528:
多谢,我知道TODO是干什么的,但是不知道怎么找到TODO在哪 ...
myeclipse 中 TODO 注释的用法
简介:
Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。
Quartz 的两个基本单元是作业(job)和触发器(trigger)。
作业 是能够调度的可执行任务
触发器 提供了对作业的调度,主要分为SimpleTrigger和Cron Trigger
示例 1:作业
通过实现 org.quartz.job 接口,可以使 Java 类变成可执行的。清单 1 提供了 Quartz 作业的一个示例。这个类用一条非常简单的输出语句覆盖了 execute(JobExecutionContext context) 方法。这个方法可以包含我们想要执行的任何代码
清单1 QuartzJob
示例 2:简单触发器
触发器可以实现对任务执行的调度。Quartz 提供了几种不同的触发器,复杂程度各不相同。清单 2 中的 SimpleTrigger 展示了触发器的基础:
清单2 TestClass
示例 2:复杂触发器
CronTrigger 支持比 SimpleTrigger 更具体的调度,而且也不是很复杂。基于 cron 表达式,CronTrigger 支持类似日历的重复间隔,而不是单一的时间间隔 —— 这相对 SimpleTrigger 而言是一大改进。
Cron 表达式包括以下 7 个字段:
秒
分
小时
月内日期
月
周内日期
年(可选字段)
特殊字符
Cron 触发器利用一系列特殊字符,如下所示:
反斜线(/)字符表示增量值。例如,在秒字段中“5/15”代表从第 5 秒开始,每 15 秒一次。
问号(?)字符和字母 L 字符只有在月内日期和周内日期字段中可用。问号表示这个字段不包含具体值。所以,如果指定月内日期,可以在周内日期字段中插入“?”,表示周内日期值无关紧要。字母 L 字符是 last 的缩写。放在月内日期字段中,表示安排在当月最后一天执行。在周内日期字段中,如果“L”单独存在,就等于“7”,否则代表当月内周内日期的最后一个实例。所以“0L”表示安排在当月的最后一个星期日执行。
在月内日期字段中的字母(W)字符把执行安排在最靠近指定值的工作日。把“1W”放在月内日期字段中,表示把执行安排在当月的第一个工作日内。
井号(#)字符为给定月份指定具体的工作日实例。把“MON#2”放在周内日期字段中,表示把任务安排在当月的第二个星期一。
星号(*)字符是通配字符,表示该字段可以接受任何可能的值。
清单2 TestClass
Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。
Quartz 的两个基本单元是作业(job)和触发器(trigger)。
作业 是能够调度的可执行任务
触发器 提供了对作业的调度,主要分为SimpleTrigger和Cron Trigger
示例 1:作业
通过实现 org.quartz.job 接口,可以使 Java 类变成可执行的。清单 1 提供了 Quartz 作业的一个示例。这个类用一条非常简单的输出语句覆盖了 execute(JobExecutionContext context) 方法。这个方法可以包含我们想要执行的任何代码
清单1 QuartzJob
package com.dheaven.demo.quartz; import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class QuartzJob implements Job { public void execute(JobExecutionContext arg0) throws JobExecutionException { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(df.format(new Date())+" hi,我是一个job,我要开始执行了。"); } }
示例 2:简单触发器
触发器可以实现对任务执行的调度。Quartz 提供了几种不同的触发器,复杂程度各不相同。清单 2 中的 SimpleTrigger 展示了触发器的基础:
清单2 TestClass
package com.dheaven.demo.quartz; import java.io.File; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.lang.StringUtils; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.junit.Test; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.Trigger; import org.quartz.TriggerUtils; import com.dheaven.demo.pojo.Student; import com.dheaven.framework.util.FileUtils; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; public class TestClass { @Test public void testSimpleJob() { SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(); try { Scheduler sched = schedFact.getScheduler(); sched.start(); JobDetail deviceJobDetail = new JobDetail("deviceJob", "massnmp",QuartzJob.class); Trigger deviceTrigger = TriggerUtils.makeSecondlyTrigger(5); deviceTrigger.setStartTime(new Date()); deviceTrigger.setName("deviceTrigger"); sched.scheduleJob(deviceJobDetail, deviceTrigger); deviceJobDetail = new JobDetail("deviceJob2", "massnmp", Job2.class); deviceTrigger = TriggerUtils.makeSecondlyTrigger(9); deviceTrigger.setStartTime(new Date()); deviceTrigger.setName("deviceTrigger2"); sched.scheduleJob(deviceJobDetail, deviceTrigger); } catch (SchedulerException e) { e.printStackTrace(); } while (true) { try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } } }
示例 2:复杂触发器
CronTrigger 支持比 SimpleTrigger 更具体的调度,而且也不是很复杂。基于 cron 表达式,CronTrigger 支持类似日历的重复间隔,而不是单一的时间间隔 —— 这相对 SimpleTrigger 而言是一大改进。
Cron 表达式包括以下 7 个字段:
秒
分
小时
月内日期
月
周内日期
年(可选字段)
特殊字符
Cron 触发器利用一系列特殊字符,如下所示:
反斜线(/)字符表示增量值。例如,在秒字段中“5/15”代表从第 5 秒开始,每 15 秒一次。
问号(?)字符和字母 L 字符只有在月内日期和周内日期字段中可用。问号表示这个字段不包含具体值。所以,如果指定月内日期,可以在周内日期字段中插入“?”,表示周内日期值无关紧要。字母 L 字符是 last 的缩写。放在月内日期字段中,表示安排在当月最后一天执行。在周内日期字段中,如果“L”单独存在,就等于“7”,否则代表当月内周内日期的最后一个实例。所以“0L”表示安排在当月的最后一个星期日执行。
在月内日期字段中的字母(W)字符把执行安排在最靠近指定值的工作日。把“1W”放在月内日期字段中,表示把执行安排在当月的第一个工作日内。
井号(#)字符为给定月份指定具体的工作日实例。把“MON#2”放在周内日期字段中,表示把任务安排在当月的第二个星期一。
星号(*)字符是通配字符,表示该字段可以接受任何可能的值。
清单2 TestClass
package com.dheaven.demo.quartz; import java.io.File; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.lang.StringUtils; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.junit.Test; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.Trigger; import org.quartz.TriggerUtils; import com.dheaven.demo.pojo.Student; import com.dheaven.framework.util.FileUtils; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; public class TestClass { @Test public void testCronJob() { SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(); try { Scheduler sched = schedFact.getScheduler(); sched.start(); JobDetail deviceJobDetail = new JobDetail("deviceJob", "massnmp",QuartzJob.class); CronTrigger deviceTrigger = new CronTrigger(); deviceTrigger.setCronExpression("30 38 11 * * ?"); deviceTrigger.setStartTime(new Date()); deviceTrigger.setName("deviceTrigger"); sched.scheduleJob(deviceJobDetail, deviceTrigger); } catch (SchedulerException e) { e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); } while (true) { try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } } } }
发表评论
-
Linux 命令总结
2010-10-27 19:22 1340-------文件、目录操作命令---------- ... -
10 个最酷的 Linux 单行命令
2010-10-26 18:22 1475下面是来自 Commandlinefu 网站由用户投票决出的 ... -
java.lang包应用
2010-10-18 19:35 1085String 1.字符串倒序排列; 如:String s ... -
7个致命的 Linux 命令
2010-10-18 18:26 1220如果你是一个 Linux 新手,在好奇心的驱使下,可能会去尝试 ... -
JDK1.5新特性
2010-09-29 18:59 932“JDK1.5”的一个重要主 ... -
强烈推荐几个比较好的Java代码查询网站
2010-07-22 11:37 1076这些是我经常使用的一些Java代码查询网站,希望在这里能起到抛 ... -
Java使用XStream将集合类内容序列化为XML (转)
2010-06-21 17:18 874最近因工作需要,在研究将Collection 生成xml文件, ... -
JXL解析excel
2010-06-18 19:54 1764在进行实践前,我们需要对excel有一个大致的了解,ex ... -
FilenameFilter接口的用法(转)
2010-06-18 15:04 2078使用FilenameFilter实现图片过滤,只要.gif,. ... -
Date、String、Calendar类型之间的转化
2010-05-27 17:25 25941.Calendar 转化 String //获取当前时间的 ... -
svn图解安装教程
2010-05-27 11:13 1437今天在网站上找到了一套非常不错的svn图解安装教程: ... -
Java中各种异常类及其解释
2010-05-25 20:20 1018算术异常类:ArithmeticExecption 空指 ... -
JAVA中使用JCOM和JXL
2010-05-25 10:34 1179在JAVA中使用JCOM和JXL进行Excel编程的注意要点: ... -
Java类的编码和解码
2010-05-21 16:53 929编码: java.net.URLEncoder; pu ... -
java.util.Properties
2010-05-18 23:09 1181Properties 类表示了一个持久的属性集。Propert ... -
JAVA第三方开源库之XStream
2010-05-02 22:43 1271XStream是一个开源项目,利用它可以方便的进行java对象 ... -
JAVA第三方开源库之Dom4j
2010-05-02 22:31 1327DOM4J是dom4j.org出品的一 ... -
Ant
2010-05-01 20:58 840简介: Ant是一种基于java的build工具,有些类 ... -
JAVA之反射机制
2010-05-01 19:46 962i.概念: JAVA反射机制是在运行状态中,对于任意一个 ... -
newInstance()方法和new关键字的区别
2010-05-01 19:26 1650在初始化一个类,生成一个实例的时候,newInstance() ...
相关推荐
Quartz是java的开源定时器,使用十分广泛,附件是开源定时器Quartz的源文件
关于java Quartz的小例子 关于java Quartz的小例子
java-quartz-demo java-quartz-demo 可以实现添加任务 删除任务 定义任务执行时间,项目中的jar包已经存在于zip中,下载下来直接运行
使用quartz实现的java 定时任务,通过写cron表达式,让任务在制定时刻触发执行。
Java quartz 定时器调度框架,用于Java实现定时调度功能。
基于java的Quartz的实例,直接导入MyEclipse中就能用,可以把引入的java.SQL及用到的东西删除掉
自己写的quartzdemo,quartz版本2.0.2
Quartz--JAVA定时任务\Java应用:Java调度任务和Spring Quartz (1)
Java_Spring与Quartz的整合
quartzJAVA包和api 最新版本,api是英文的
Quartz是功能强大的开源作业调度库,几乎可以集成到任何Java应用程序中-从最小的独立应用程序到最大的电子商务系统。Quartz可用于创建简单或复杂的计划,以执行数以万计,数以万计的工作;任务定义为标准Java组件的...
Java Quartz开发的特性,及Java Quartz开发实例。
Quartz2.2版本开发手册(JAVA)
java定时执行多任务和quartz定时执行多任务
该示例将执行以下操作: 用一个工作线程创建一个调度... 安排三个不同优先级的触发器,第一次同时触发,第二次以错开的时间间隔触发; 启动Quartz Scheduler; 等待30秒让 Job 有机会触发触发器; 关闭调度程序;
Java使用quartz实现任务调度定时任务
内含: quartz-1.5.2.zip 定时器Quartz及使用说明 Quartz的API
通过Quartz这个第三方组件实现任务定时执行以及任务的状态跟踪。
Quartz SimpleTrigger CronTrigger java 源码 多任务 单任务实现 jobQuartz SimpleTrigger CronTrigger java 源码 多任务 单任务实现 job
spring定时器代码。解决多次执行问题。包含quartz-all.jar包。 说明很详细。希望能帮上哪位朋友。