- 浏览: 102635 次
- 性别:
- 来自: 上海
最新评论
-
kingtay:
...
查看class文件的字节码版本号 -
kkfbai:
补充说明一下:如果只想判断两个LIST是否有交集,可以使用Co ...
java 两list求交集
[转]Quartz实例
关键字: Quartz,实例
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1232849
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。
实例:
package example.quartz;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import java.util.Date;
/** */ /**
* @author starsiday
*/
/**/ /* 实现Job */
public class QuartzReport implements Job {
/**/ /* 重载该函数 */
public void execute(JobExecutionContext cntxt) throws JobExecutionException {
System.out.println( " Generating report - "
+ cntxt.getJobDetail().getJobDataMap().get( " type " )
+ new Date());
}
public static void main(String[] args) {
try {
SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
Scheduler sched = schedFact.getScheduler();
sched.start();
JobDetail jobDetail = new JobDetail( " Income Report " ,
" Report Generation " , QuartzReport. class );
jobDetail.getJobDataMap().put( " type " , " FULL " );
CronTrigger trigger = new CronTrigger( " Income Report " ,
" Report Generation " );
/**/ /* 每1分钟执行一次 */
trigger.setCronExpression( " 0 0/1 * * * ? " );
sched.scheduleJob(jobDetail, trigger);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Quartz的配置文件:quartz.properties
# Configure Main Scheduler Properties
org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = one
# Configure ThreadPool
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 4
# Configure JobStore
org.quartz.jobStore.misfireThreshold = 5000
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
附:cronExpression配置说明
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /
表达式 意义
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
特殊字符 意义
* 表示所有值;
? 表示未说明的值,即不关心它为何值;
- 表示一个指定的范围;
, 表示附加一个可能值;
/ 符号前表示开始时间,符号后表示每次递增的值;
L("last") ("last") "L" 用在day-of-month字段意思是 "这个月最后一天";用在 day-of-week字段, 它简单意思是 "7" or "SAT"。 如果在day-of-week字段里和数字联合使用,它的意思就是 "这个月的最后一个星期几" – 例如: "6L" means "这个月的最后一个星期五". 当我们用“L”时,不指明一个列表值或者范围是很重要的,不然的话,我们会得到一些意想不到的结果。
W("weekday") 只能用在day-of-month字段。用来描叙最接近指定天的工作日(周一到周五)。例如:在day-of-month字段用“15W”指“最接近这个月第15天的工作日”,即如果这个月第15天是周六,那么触发器将会在这个月第14天即周五触发;如果这个月第15天是周日,那么触发器将会在这个月第16 天即周一触发;如果这个月第15天是周二,那么就在触发器这天触发。注意一点:这个用法只会在当前月计算值,不会越过当前月。“W”字符仅能在day- of-month指明一天,不能是一个范围或列表。也可以用“LW”来指定这个月的最后一个工作日。
# 只能用在day-of-week字段。用来指定这个月的第几个周几。例:在day-of-week字段用"6#3"指这个月第3个周五(6指周五,3指第3个)。如果指定的日期不存在,触发器就不会触发。
C 指和calendar联系后计算过的值。例:在day-of-month 字段用“5C”指在这个月第5天或之后包括calendar的第一天;在day-of-week字段用“1C”指在这周日或之后包括calendar的第一天。
在MONTH和Day Of Week字段里对字母大小写不敏感。
关键字: Quartz,实例
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1232849
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。
实例:
package example.quartz;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import java.util.Date;
/** */ /**
* @author starsiday
*/
/**/ /* 实现Job */
public class QuartzReport implements Job {
/**/ /* 重载该函数 */
public void execute(JobExecutionContext cntxt) throws JobExecutionException {
System.out.println( " Generating report - "
+ cntxt.getJobDetail().getJobDataMap().get( " type " )
+ new Date());
}
public static void main(String[] args) {
try {
SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
Scheduler sched = schedFact.getScheduler();
sched.start();
JobDetail jobDetail = new JobDetail( " Income Report " ,
" Report Generation " , QuartzReport. class );
jobDetail.getJobDataMap().put( " type " , " FULL " );
CronTrigger trigger = new CronTrigger( " Income Report " ,
" Report Generation " );
/**/ /* 每1分钟执行一次 */
trigger.setCronExpression( " 0 0/1 * * * ? " );
sched.scheduleJob(jobDetail, trigger);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Quartz的配置文件:quartz.properties
# Configure Main Scheduler Properties
org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = one
# Configure ThreadPool
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 4
# Configure JobStore
org.quartz.jobStore.misfireThreshold = 5000
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
附:cronExpression配置说明
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /
表达式 意义
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
特殊字符 意义
* 表示所有值;
? 表示未说明的值,即不关心它为何值;
- 表示一个指定的范围;
, 表示附加一个可能值;
/ 符号前表示开始时间,符号后表示每次递增的值;
L("last") ("last") "L" 用在day-of-month字段意思是 "这个月最后一天";用在 day-of-week字段, 它简单意思是 "7" or "SAT"。 如果在day-of-week字段里和数字联合使用,它的意思就是 "这个月的最后一个星期几" – 例如: "6L" means "这个月的最后一个星期五". 当我们用“L”时,不指明一个列表值或者范围是很重要的,不然的话,我们会得到一些意想不到的结果。
W("weekday") 只能用在day-of-month字段。用来描叙最接近指定天的工作日(周一到周五)。例如:在day-of-month字段用“15W”指“最接近这个月第15天的工作日”,即如果这个月第15天是周六,那么触发器将会在这个月第14天即周五触发;如果这个月第15天是周日,那么触发器将会在这个月第16 天即周一触发;如果这个月第15天是周二,那么就在触发器这天触发。注意一点:这个用法只会在当前月计算值,不会越过当前月。“W”字符仅能在day- of-month指明一天,不能是一个范围或列表。也可以用“LW”来指定这个月的最后一个工作日。
# 只能用在day-of-week字段。用来指定这个月的第几个周几。例:在day-of-week字段用"6#3"指这个月第3个周五(6指周五,3指第3个)。如果指定的日期不存在,触发器就不会触发。
C 指和calendar联系后计算过的值。例:在day-of-month 字段用“5C”指在这个月第5天或之后包括calendar的第一天;在day-of-week字段用“1C”指在这周日或之后包括calendar的第一天。
在MONTH和Day Of Week字段里对字母大小写不敏感。
发表评论
-
IDEA 社区版同一个项目启动多次
2022-09-23 07:58 394打开idea社区版的服务列表,选中要多次启动的项目,右键选 ... -
正则表达示提取匹配内容
2019-10-15 19:14 606public static void main(Strin ... -
java https tomcat 单双认证(含证书生成和代码实现)
2018-01-11 15:14 826https://www.cnblogs.com/sprin ... -
nginx1.0.4 配置
2014-09-17 11:51 750见附件 -
jconsole 远程连接
2014-08-21 14:18 1214linux服务器应用程序的启动配置如下: ####### ... -
判断一个字符中是否有乱码
2014-05-19 11:30 1340package com.test; import ja ... -
SizeOf对象的大小
2013-12-25 17:36 837private static void mobileno() ... -
JVM系列三:JVM参数设置、分析
2014-05-19 11:34 745不管是YGC还是Full GC,GC过程中都会对导致程序运 ... -
Eclipse去除js(JavaScript)错误
2013-08-20 09:46 603最近出了一个很怪的 ... -
webQQ-web版及时通信
2013-06-24 15:42 741webQQ-web版及时通信 带sql脚本 -
输出堆栈日志
2013-06-07 09:08 1090@echo off&setlocal enablede ... -
将JAVA应用程序打包成EXE可执行文件教程.doc
2013-04-15 14:11 925将JAVA应用程序打包成EXE可执行文件教程.doc -
java 获取当前运行服务的操作系统PID
2013-04-11 11:22 1054ManagementFactory.getRuntimeM ... -
LambdaProbe使用简介
2012-09-27 14:59 1009LambdaProbe使用简介 LambdaProb ... -
Java编程中“为了性能”尽量要做到的一些地方(转)
2012-03-08 14:21 2327最近的机器内存又爆满了,除了新增机器内存外,还应该好好revi ... -
java基础
2010-05-30 21:07 874String a = new String ... -
把Https网站中的安全证书导入到java的cacerts证书库中
2010-05-28 11:28 4250有两种方式 一. Untitled如何把Https网 ... -
语录收集
2010-05-17 16:35 896设计模式 Abstract Factory:提供一个创建 ... -
循环bean的属性
2010-04-23 17:51 916private Map<String, String&g ... -
remove list
2009-11-20 10:22 959Iterator<AcctChargeConfigDTO ...
相关推荐
在本文中,我们将深入探讨如何在基于C51的51单片机上利用ADC0809进行模数转换,并通过定时器提供CLK信号。ADC0809是一款8位逐次逼近型模数转换器,广泛应用于各种嵌入式系统中。 首先,我们需要了解51单片机的基本...
在该系列单片机中,定时器0和定时器2是两个重要的硬件资源,可用于执行各种时间相关的任务,如脉冲输出、中断服务和定时操作等。在本项目中,我们将探讨如何利用这两个定时器在16位自动重装模式下,分别在两个不同的...
在本文中,我们将深入探讨如何使用单片机C语言编程,特别是在Keil环境下,来实现一个可调节的定时器作为普通时钟的功能。定时器在单片机应用中扮演着重要角色,它不仅可以用于时间间隔的测量,还能作为事件调度器,...
在C#编程中,线程和定时器是两个非常重要的概念,它们在多任务处理和时间触发事件中发挥着核心作用。本项目基于C#2008,旨在实现线程和定时器的基本功能,包括开启和关闭,同时也提供了一个简单的用户界面,方便...
在实际应用中,我们常常需要通过定时器来触发ADC的转换,以便于实现周期性的采样或同步其他系统活动。 在本项目中,STM32的ADC是由通用定时器3(TIM3)来触发转换的。这通常涉及到以下步骤和知识点: 1. **配置ADC...
在C# WinForm开发中,委托和定时器是两个非常重要的概念,它们在构建交互式应用程序时发挥着关键作用。让我们深入探讨这两个知识点,并通过案例分析来理解它们的应用。 首先,我们来了解一下委托。委托在C#中可以...
数码管与定时器上--力天手把手教你学单片机之实战篇"中,我们将深入探讨单片机应用中的两个关键概念:数码管显示和定时器的使用。这两部分是单片机控制和人机交互的基础,对于理解和实践单片机编程至关重要。 首先...
ARM S3C2440是一款广泛应用的微处理器,它包含了多个定时器,能够满足这类需求。本文将详细介绍S3C2440的定时器中断及其配置。 首先,了解S3C2440的时钟系统至关重要。该系统的核心是外部时钟源,通常是晶振,通过...
中断系统允许单片机在执行某个任务时,响应其他事件请求,如定时器溢出,并暂时停止当前任务,转去处理事件请求,处理完后再回到原来的任务。 第一节中断概述: 中断是指单片机在执行某个任务时,遇到其他事件请求...
单片机定时器是单片机中非常关键的硬件资源,它用于实现各种时间间隔的控制,例如延时、脉冲产生、波特率生成等。在51单片机系列中,定时器的使用尤为常见,其工作原理是通过内部计数器在每个机器周期加1,当计数值...
在AVR微控制器系列中,比较/定时器0和1是两种重要的硬件资源,它们广泛应用于各种实时控制和信号处理任务。这篇文档将详细介绍如何初始化这些定时器,并着重讲解如何配置它们实现比较输出和PWM(脉宽调制)功能。 ...
555集成定时器是一种非常常见的电子元器件,其在电子设计中扮演着重要的角色,广泛应用在各种电子设备中,如电子控制、检测、仪表、家电、音响、报警系统、玩具等。555定时器的独特之处在于它结合了模拟电路和数字...
在嵌入式系统或者实时操作系统(RTOS)的开发中,定时器是不可或缺的组件,用于实现各种时间相关的功能,如任务调度、事件触发、超时检测等。标题提到的“多定时器复用一个硬件定时器”是一种高效利用硬件资源的技术...
根据给定的文件信息,我们可以总结出以下关于“51单片机定时器C语言程序”的相关知识点: ### 一、51单片机简介 51单片机是一种广泛应用于电子设备中的微控制器,其核心是8位的中央处理器(CPU)。51单片机因其...
5. **逻辑控制**:PLC程序需包含逻辑判断,如“如果开按钮被按下,则启动电机”,“如果接近开关检测到电机已启动,则开始正转定时器”,“如果正转定时器结束,则启动反转定时器”,“如果反转定时器结束或任意停止...
STM32定时器触发ADC+DMA是一种高效的数据采集方法,尤其适用于需要定时采样的应用,例如监测脉搏信号。在STM32微控制器中,ADC(模数转换器)可以通过DMA(直接存储器访问)自动将采集到的模拟信号转换为数字数据并...
本篇文章将深入探讨如何使用 Verilog 设计一个功能丰富的定时器,包括倒计时、时分秒计时以及支持用户在任意时刻停止计时的功能。 一、Verilog 定时器基础 Verilog 定时器的核心是计数器模块,它通过不断累加或减...
在STM32F103中,有多个可编程定时器可供选择,包括基本定时器、通用定时器和高级定时器。在这个项目中,我们涉及到了定时器1、2、3、4和5。这些定时器都可以配置为输入捕获模式,用来捕获旋转编码器的脉冲。对于高级...
STM32定时器中断是嵌入式开发中的一个重要概念,主要应用于实时系统和需要精确时间控制的任务中。在这个实验中,我们将重点讨论如何利用STM32的TIM3定时器中断来控制DS1的翻转,并在主函数中通过DS0的翻转来指示程序...
【555集成定时器及应用】555集成定时器是一种多功能的八脚双极性集成电路,广泛用于定时、振荡和脉冲产生。它由三个比较器、一个分压器、一个模拟开关和一个放电晶体管组成。555定时器的工作原理主要依赖于三个控制...