`
yimeng528
  • 浏览: 190478 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Quartz之AnnualCalendar

阅读更多
问题1 我想排除一年中的某一天,怎么办呢! 
Quartz:使用AnnualCalendar进行相应的设置 
参考资料 
1 Quartz入门简介三 
http://wwwzchen.iteye.com/blog/846099 
2 quartz 学习笔记 
http://chinaxxren.iteye.com/blog/897989 
Quartz的BaseCalendar层次结构如下: 
 
在本例中主要用到了AnnualCalendar,它的作用是排除排除每一年中指定的一天或多天. 
AnnualCalendar类说明如下: 
Java代码   收藏代码
  1. This implementation of the Calendar excludes a set of days of the year. You may use it to exclude bank holidays which are on the same date every year.   

其它相应的有:CronCalendar(表达式),DailyCalendar(指定的时间范围内的每一天),HolidayCalendar(排除节假日),MonthlyCalendar(排除月份中的数天),WeeklyCalendar(排除星期中的一天或多天) 
具体代码如下: 
Java代码   收藏代码
  1. //法定节日是以每年为周期的,所以使用AnnualCalendar    
  2.        AnnualCalendar holidays = new AnnualCalendar();          
  3.        // ②五一劳动节    
  4.        Calendar laborDay = new GregorianCalendar();    
  5.        laborDay.add(Calendar.MONTH, 5);    
  6.        laborDay.add(Calendar.DATE, 1);    
  7.        // ②-1:排除的日期,如果设置为false则为包含    
  8.        holidays.setDayExcluded(laborDay, true);    
  9.        // ③国庆节    
  10.        Calendar nationalDay = new GregorianCalendar();    
  11.        nationalDay.add(Calendar.MONTH, 10);    
  12.        nationalDay.add(Calendar.DATE, 1);    
  13.        // ③-1:排除该日期    
  14.        holidays.setDayExcluded(nationalDay, true);            
  15.        //添加到时间集合到任务调度器中  
  16.        sched.addCalendar("holidays", holidays, false,false);             
  17.        //当前时间15秒后运行  
  18.        Date startTime = nextGivenSecondDate(null15);  
  19.        //绑定任务  
  20.        JobDetail job = newJob(SimpleJob.class)  
  21.            .withIdentity("job1""group1")  
  22.            .build();          
  23.        //触发器  
  24.        SimpleTrigger trigger = newTrigger()   
  25.            .withIdentity("trigger1""group1")  
  26.            .startAt(startTime)  
  27.            .withSchedule(simpleSchedule()  
  28.                    .withIntervalInHours(1)//重复间隔:小时为单位  
  29.                    .repeatForever())  
  30.            .modifiedByCalendar("holidays")  
  31.            .build();          
  32.         
  33.        //运行时间  
  34.        Date firstRunTime = sched.scheduleJob(job, trigger);         
  35.        log.error(job.getKey() +  
  36.                " will run at: " + firstRunTime +    
  37.                " and repeat: " + trigger.getRepeatCount() +   
  38.                " times, every " + trigger.getRepeatInterval() / 1000 + " seconds");          
  39.        
  40.        //启动调度器  
  41.        sched.start();  
分享到:
评论

相关推荐

    Quartz使用总结

    import org.quartz.impl.calendar.AnnualCalendar; public class QuartzTest { public static void main(String[] args) { try { // 创建scheduler Scheduler scheduler = StdSchedulerFactory....

    Quartz学习文档

    Quartz提供了多种类型的Calendar实现,如`AnnualCalendar`、`MonthlyCalendar`和`WeeklyCalendar`,用于按年、月、周定义排除规则。 在实际使用中,开发者首先需要创建JobDetail对象,定义任务的实现类和相关信息。...

    Quartz任务调度快速入门

    Quartz提供了AnnualCalendar、MonthlyCalendar和WeeklyCalendar等实现,方便对不同时间段进行定制。 5. **Scheduler**: Scheduler是Quartz的核心,它是一个独立的运行容器,负责管理和调度JobDetail和Trigger。...

    任务调度框架Quartz[收集].pdf

    Quartz提供了AnnualCalendar、MonthlyCalendar、WeeklyCalendar等实现,帮助开发者定义不同时间粒度的排除规则。 Scheduler是Quartz的运行核心,它管理所有的Trigger和JobDetail。每个Trigger和JobDetail都有自己的...

    Quartz集群配置[定义].pdf

    此外,Quartz提供了一系列预定义的Calendar实现,如AnnualCalendar、MonthlyCalendar和WeeklyCalendar,方便根据不同的时间段进行调度。 Scheduler作为Quartz的运行容器,可以注册Trigger和JobDetail,并通过组和...

    quartz教程

    Quartz提供了多种`Calendar`实现,如`AnnualCalendar`、`MonthlyCalendar`和`WeeklyCalendar`,分别针对不同的时间周期进行定制。 #### 五、总结 Quartz不仅是一个强大的任务调度框架,它还通过其丰富的特性(如...

    Job 任务介绍

    - **实现类**: 在 `org.quartz.impl.calendar` 包下提供了一些具体的实现类,如 `AnnualCalendar`、`MonthlyCalendar` 和 `WeeklyCalendar` 等,分别针对每年、每月和每周进行定义。 - **Scheduler (调度器)** - ...

Global site tag (gtag.js) - Google Analytics