redlly 写道
Quartz如何定义每周一到五上午9:20-下午15:40每五分钟执行一次的Cron表达式。
另外还有两个问题:
1、Quartz可以通过读取数据库中的日期来判断是否执行吗?因为中国的非工作日还有五一、十一、春节,这些时候都不用执行;
2、有任务A每五分钟执行一次,假如该任务五分钟后还没执行完,又到了下一次执行时间,后面的任务还会执行吗?会不会另启一个线程继续执行,如果是这样可能会产生脏数据的问题。
一,Quartz严格按照指定的触发器来执行任务.需要在执行前判断可以实现JobListener接口.将实现对像加到Scheduler中,并指定该对象为JobDetail的JobListener.
二,会执行.是启动另一个线程执行的.如果你不需要这样的话可以考虑使用Java的TimerTask来做.
redlly 写道
Quartz如何定义每周一到五上午9:20-下午15:40每五分钟执行一次的Cron表达式。
想到一个笨方法,把“上午9:20 - 下午15:40”分解为3个时间段:
一。 9:20 - 10:00
二。 10:00 - 15:00
三。 15:00 - 15:40
所以,可以写3个job来执行:
一。 9:20 - 10:00
=========================================
0 20,25,30,35,40,45,50,55 9 ? * MON-FRI
=========================================
二。 10:00 - 15:00
=========================================
0 0,5,10,15,20,25,30,35,40,45,50,55 10-14 ? * MON-FRI
=========================================
三。 15:00 - 15:40
=========================================
0 0,5,10,15,20,25,30,35,40 15 ? * MON-FRI
=========================================
肯定有人有更好的办法,请指正。
感谢三楼和四楼对我的帮助!suyulin6688的主意也很不错,是否可以改写一下:
一。 9:20 - 10:00
=========================================
0 20-59/5 9 ? * MON-FRI
=========================================
二。 10:00 - 15:00
=========================================
0 0/5 10-14 ? * MON-FRI
=========================================
三。 15:00 - 15:40
=========================================
0 0-40/5 15 ? * MON-FRI
=========================================
还没做过测试,晚点试一下。