每天上午8:30:00到12:30:00之间每隔20分钟执行一次,这种表达式怎么写?
每天上午8:30:30到8:40:30之间每隔20秒执行一次,表达式怎么写?原来想通过contrigger设置开始时间和结束时间实现,但是发现开始时间和
结束时间必须包含:yyyy-MM-dd.目前我只想到两中方法.第一种方法:
设置开始时间,结束时间无. 表达式: 0 0/20 8-12 * * ?
这样每天8:00到10:59之间会每隔20分钟执行一次,然后我在执行的方法里判断执行的时间
是否大于结束时间,如果大于则不执行.第二种方法:
拆分表达方式,即设置之后,并不追求一个trigger搞定,而是
用多个trigger来实现.
 0 30/20 8 * * ?     0 0/20 9-11 * * ?   0 0-30/20 12 * * ?
不过这样会比较繁琐,上述就是我目前想到的两种方法,不知道有谁能贡献点其他想法.

解决方案 »

  1.   

    难道就没有用过quartz的吗 = =
      

  2.   

    第一种方法就够了加上一个全局标示量 boolean值进入job后 首先判断是否为true 为true标示已经在执行 然后return
    首次进入默认为false 进入job方法体内先设置为true 当方法执行完成前 设置回false
      

  3.   

    他大爷的C S D N 敲了三遍才提交成功 破服务器 加那么多广告 不down找谁呀
      

  4.   

    如果你用spring3.0里面的注解式配置也可以进行调度!我试过的。
    就是在方法体上面加上一个注解@什么来着忘记了!嘿嘿
      

  5.   

    我用第一种方式试过,
    可以达到想要的效果,但很不稳定,有个时候超出结束时间就不再执行,有个时候还是
    会继续执行.就感觉没进入Job一样.第二种方式相当于代码灵活判断,并为一个
    job设置多个trigger来实现,不过任务数就多了...比较麻烦
      

  6.   

    用quartz的calendar.
    其中的 DailyCalendar则是每天执行,//startTime :每日的开始时间  endTime:每日的结束时间  格式统一为 HH:mm:ss
    DailyCalendar dailyCalendar = new DailyCalendar(startTime,endTime);
    dailyCalendar.setInvertTimeRange(true);scheduler.addCalendar(calendarName,dailyCalendar,false,false);//指定触发器的CalendarName
    cronTrigger.setCalendarName(calendarName);
      

  7.   

    lz,你是怎么用calendar的?整个代码+配置文件能否放出来?多谢。