`
huang552
  • 浏览: 102635 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

转 定时器

阅读更多
[转]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字段里对字母大小写不敏感。

分享到:
评论

相关推荐

    ADC0809模数转换 定时器提供CLK信号_C51_模数转换_ADC0809_

    在本文中,我们将深入探讨如何在基于C51的51单片机上利用ADC0809进行模数转换,并通过定时器提供CLK信号。ADC0809是一款8位逐次逼近型模数转换器,广泛应用于各种嵌入式系统中。 首先,我们需要了解51单片机的基本...

    STC15W系列单片机的定时器0和定时器2以16位自动重装模式分别在两个端口输出脉冲

    在该系列单片机中,定时器0和定时器2是两个重要的硬件资源,可用于执行各种时间相关的任务,如脉冲输出、中断服务和定时操作等。在本项目中,我们将探讨如何利用这两个定时器在16位自动重装模式下,分别在两个不同的...

    定时器做普通时钟可调.zip

    在本文中,我们将深入探讨如何使用单片机C语言编程,特别是在Keil环境下,来实现一个可调节的定时器作为普通时钟的功能。定时器在单片机应用中扮演着重要角色,它不仅可以用于时间间隔的测量,还能作为事件调度器,...

    C#线程及定时器的功能实现

    在C#编程中,线程和定时器是两个非常重要的概念,它们在多任务处理和时间触发事件中发挥着核心作用。本项目基于C#2008,旨在实现线程和定时器的基本功能,包括开启和关闭,同时也提供了一个简单的用户界面,方便...

    STM32 ADC由定时器触发转换

    在实际应用中,我们常常需要通过定时器来触发ADC的转换,以便于实现周期性的采样或同步其他系统活动。 在本项目中,STM32的ADC是由通用定时器3(TIM3)来触发转换的。这通常涉及到以下步骤和知识点: 1. **配置ADC...

    c# winform项目委托和定时器案例分析(两个).rar

    在C# WinForm开发中,委托和定时器是两个非常重要的概念,它们在构建交互式应用程序时发挥着关键作用。让我们深入探讨这两个知识点,并通过案例分析来理解它们的应用。 首先,我们来了解一下委托。委托在C#中可以...

    23.第十一讲.数码管与定时器上--力天手把手教你学单片机之实战篇

    数码管与定时器上--力天手把手教你学单片机之实战篇"中,我们将深入探讨单片机应用中的两个关键概念:数码管显示和定时器的使用。这两部分是单片机控制和人机交互的基础,对于理解和实践单片机编程至关重要。 首先...

    ARM S3C2440 定时器中断

    ARM S3C2440是一款广泛应用的微处理器,它包含了多个定时器,能够满足这类需求。本文将详细介绍S3C2440的定时器中断及其配置。 首先,了解S3C2440的时钟系统至关重要。该系统的核心是外部时钟源,通常是晶振,通过...

    单片机中断定时器定时器定时器

    中断系统允许单片机在执行某个任务时,响应其他事件请求,如定时器溢出,并暂时停止当前任务,转去处理事件请求,处理完后再回到原来的任务。 第一节中断概述: 中断是指单片机在执行某个任务时,遇到其他事件请求...

    有关单片机定时器初值的计算方法

    单片机定时器是单片机中非常关键的硬件资源,它用于实现各种时间间隔的控制,例如延时、脉冲产生、波特率生成等。在51单片机系列中,定时器的使用尤为常见,其工作原理是通过内部计数器在每个机器周期加1,当计数值...

    AVR的比较/定时器0和1的初始化代码

    在AVR微控制器系列中,比较/定时器0和1是两种重要的硬件资源,它们广泛应用于各种实时控制和信号处理任务。这篇文档将详细介绍如何初始化这些定时器,并着重讲解如何配置它们实现比较输出和PWM(脉宽调制)功能。 ...

    555集成定时器 555集成定时器 555集成定时器

    555集成定时器是一种非常常见的电子元器件,其在电子设计中扮演着重要的角色,广泛应用在各种电子设备中,如电子控制、检测、仪表、家电、音响、报警系统、玩具等。555定时器的独特之处在于它结合了模拟电路和数字...

    多定时器复用一个硬件定时器

    在嵌入式系统或者实时操作系统(RTOS)的开发中,定时器是不可或缺的组件,用于实现各种时间相关的功能,如任务调度、事件触发、超时检测等。标题提到的“多定时器复用一个硬件定时器”是一种高效利用硬件资源的技术...

    51单片机定时器C语言程序

    根据给定的文件信息,我们可以总结出以下关于“51单片机定时器C语言程序”的相关知识点: ### 一、51单片机简介 51单片机是一种广泛应用于电子设备中的微控制器,其核心是8位的中央处理器(CPU)。51单片机因其...

    西门子300PLC实现电机定时正反转

    5. **逻辑控制**:PLC程序需包含逻辑判断,如“如果开按钮被按下,则启动电机”,“如果接近开关检测到电机已启动,则开始正转定时器”,“如果正转定时器结束,则启动反转定时器”,“如果反转定时器结束或任意停止...

    STM32定时器触发ADC +DMA

    STM32定时器触发ADC+DMA是一种高效的数据采集方法,尤其适用于需要定时采样的应用,例如监测脉搏信号。在STM32微控制器中,ADC(模数转换器)可以通过DMA(直接存储器访问)自动将采集到的模拟信号转换为数字数据并...

    verilog定时器_定时器_verilog_verilog定时器_verilog定时_doingmco_

    本篇文章将深入探讨如何使用 Verilog 设计一个功能丰富的定时器,包括倒计时、时分秒计时以及支持用户在任意时刻停止计时的功能。 一、Verilog 定时器基础 Verilog 定时器的核心是计数器模块,它通过不断累加或减...

    基于stm32f103控制旋转编码器(EC11)正交解码,定时器12345都有

    在STM32F103中,有多个可编程定时器可供选择,包括基本定时器、通用定时器和高级定时器。在这个项目中,我们涉及到了定时器1、2、3、4和5。这些定时器都可以配置为输入捕获模式,用来捕获旋转编码器的脉冲。对于高级...

    STM32定时器中断

    STM32定时器中断是嵌入式开发中的一个重要概念,主要应用于实时系统和需要精确时间控制的任务中。在这个实验中,我们将重点讨论如何利用STM32的TIM3定时器中断来控制DS1的翻转,并在主函数中通过DS0的翻转来指示程序...

    555集成定时器及应用及A/D与D/A转换电路

    【555集成定时器及应用】555集成定时器是一种多功能的八脚双极性集成电路,广泛用于定时、振荡和脉冲产生。它由三个比较器、一个分压器、一个模拟开关和一个放电晶体管组成。555定时器的工作原理主要依赖于三个控制...

Global site tag (gtag.js) - Google Analytics