spring timer

spring定时器小结

1. spring+java.util.TimerTask
a. 定义工作任务:
工作任务类继承timerTask,并实现工作任务run.
b. 定义任务调度器:
把工作任务注入spring的定时任务调度器: ScheduledTimerTask,指定任务的执行时间.
c. 启动调度器:
通过spring的定时任务启动器TimerFactoryBead启动任务调度器,可以加载多个任务调度器.
参代码:lock.Lock
2. 使用Quartz+spring
a. 定义工作任务:
继承QuartzJobBean,实现executeInternal定义工作任务.
b. 定义任务调度器:
使用spring的触发器simpleTriggerBean,cronTriggerBean来定义调度任务.在其中指定任务执行时间.
c. 启动调度器:
通过spring启动器schedulerFactory加载触发器启动任务调度器.可以加载多个调度器
参考:一般指定时间方式:Lock2, cron指定时间方式:Lock1
3. 普通类注入到org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean来定义一个任务.
把此任务注入到任务调度器cronTriggerBean.由schedulerFactoryBean启动.jobDetail由MethodInvokingJobDetailFactoryBean创建.通俗的是通过在定义任务的类继承QuartzJobBean来定义jobDetal.
参考:task
4. 任务时间指定方式有两种
延迟和时隔时长和linux cron方式. 精确几点执行定时任务
Cron时间指定方式
一个cron表达式有到少6个(也可能是7个)由空格分隔的时间元素.从左到右,这些元素的定义如下:  
      1.秒(0-59)  
      2.分钟(0-59)  
      3.小时(0-23)  
      4.月份中的是期(1-31)  
      5.月份(1-12或SUN-DEC)  
      6.星期中的日期(1-7或SUN-SAT)  
      7.年份(1970-2099)   
     例子:  
      0 0 10,14,16 * * ? 每天上午10点,下午2点和下午4点  
      0 0,15,30,45 * 1-10 * ? 每月前10天每隔15分钟  
      30 0 0 1 1 ? 2012 在2012年1月1日午夜过30秒时  
      0 0 8-5 ? * MON-FRI 每个工作日的工作时间  
       
      - 区间  
      * 通配符  
      ? 你不想设置那个字段  

5. 使用普通类代替java.util.timerTask来定义任务
常见的定时任务是继承java.util.TimerTask来定义一个任务,现可以通过Spring 提供 org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean ,把普通的JAVA工作类注入到方法调用器中.再通过调度器(触发器)来指定任务运行方式.由schedulerFactory启动调度器.
参见代码: Task2

你可能感兴趣的:(spring,工作,linux,quartz,sun)