- 如果觉得Quartz麻烦,也可以用JDK自带的Timer类完成定时调度任务
- 以下示例为定时任务延时10秒后开始启动,每秒执行一次
//定时任务在延时多久后开始启动(毫秒)
long delay=10000L;
//多久执行一次(毫秒)
long period=1000L;
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("执行任务");
}
}, delay, period);
- schedule方法有多个重载,具体见JDK源码
配置文件
- 注册任务所在类的Bean
<bean id="[自取bean的id]" class="com.kingdon.MyDataTimer"/>
- 配置定时调度的方法
<bean id="myDataTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="[自取bean的id]"/>
<property name="targetMethod" value="[执行的方法的方法名]"/>
<property name="concurrent" value="false"/>
</bean>
- 配置定时调度任务
- 只执行一次
<bean id="myDataTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="myDataTask"/>
<property name="startDelay" value="20"/>//执行延迟
<property name="repeatInterval" value="0"/>//重复间隔
<property name="repeatCount" value="0"/>//重复次数
</bean>
- 定期执行
<bean id="myDataTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="myDataTask"/>
</property>
<property name="startDelay" value="120"/>//执行延迟
<property name="cronExpression" value="[cron表达式]">
</property>
</bean>
- 配置启动器
<bean id="startQuartz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false"
autowire="no">
<property name="triggers">
<list>
<ref bean="myDataTrigger"/>
</list>
</property>
<property name="quartzProperties">
<props>
<prop key="org.quartz.threadPool.threadCount">1</prop>
</props>
</property>
</bean>
cron表达式crom语法
基础
- 秒(0-59)
- 分(0-59)
- 小时(0-23)
- 日(1-31)
- 月(1-12)
- 星期几(1-7,1代表星期日)
- 年(1970-2099,可选域)
符号
- 通配符(*):当前域的每个值
- 无指定值(?)
- 当设置日,不设置星期几;当设置星期几,不设置日
- 值增量(/)
3/7 * * * * ?——第3秒开始,每7秒匹配成功一次 - 时间段(-)
3-7 * * * * ?——每分钟的第3~7秒 - 连接多个值(,)
3,5,7 * * * * ?——每分钟的第3,5,7秒 - Last(L)——当L作用在日上,代表这个月的最后一作用在星期几上时,代表这个月的最后一个星期几
1L:每月的最后一个周日
5L:每月的最后一个周四
举例如下
每秒执行一次
0/1 * * * * ?
每隔5秒执行一次
0/5 * * * * ?
每隔1分钟执行一次
0 0/1 * * * ?
每天23点执行一次
0 0 23 * * ?
每天凌晨1点执行一次
0 0 1 * * ?
每月1号凌晨1点执行一次
0 0 1 1 * ?
每月最后一天23点执行一次
0 0 23 L * ?
每周星期天凌晨1点实行一次
0 0 1 ? * 1
在26分、29分、33分执行一次
0 26,29,33 * * * ?
每天的0点、13点、18点、21点都执行一次
0 0 0,13,18,21 * * ?
每隔10秒执行一次
0/10 * * * * ?
朝九晚五工作时间内每半小时
0 0/30 9-17 ? * 2-6
每隔五分钟执行一次
0 0/5 * * * ?
每天23点59分执行一次
0 59 23 * * ?
每天凌晨一点执行一次
0 0 1 * * ?
每月最后一天23点执行一次
0 0 23 L * ?
在每周一、三、五的9点、12点、18点、23点都执行一次
0 0 9,12,18,23 ? * 2,4,6
每天12点触发
0 0 12 * * ?
每天10点15分触发
0 15 10 * * ?
2005年每天10点15分触发
0 15 10 * * ? 2005
每天下午2点到2点59分每分触发(每天下午两点每一分钟都触发)
0 * 14 * * ?
每天下午2点到2点59分(整点开始,每隔5分触发)
0 0/5 14 * * ?
每天下午2点到2点05分每分触发
0 0-5 14 * * ?
从周一到周五每天上午的10点15分触发
0 15 10 ? * 2-6
每月15号上午10点15分触发
0 15 10 15 * ?
每月最后一天的10点15分触发
0 15 10 L * ?
每月最后一周的星期五的10点15分触发
0 15 10 ? * 6L
从2002年到2005年每月最后一周的星期六的10点15分触发
0 15 10 ? * 7l 2002-2005
2011年的11月11号11点11分11秒触发
11 11 11 11 11 ? 2011
每半分钟触发任务
0/30 * * * * ?
每小时的10分30秒触发任务
30 10 * * * ?
每天1点10分30秒触发任务
30 10 1 * * ?
每月20号1点10分30秒触发任务
30 10 1 20 * ?
每年10月20号1点10分30秒触发任务
30 10 1 20 10 ?
2011年10月20号1点10分30秒触发任务
30 10 1 20 10 ? 2011
2011年10月每天1点10分30秒触发任务
30 10 1 * 10 ? 2011
2011年10月每周日1点10分30秒触发任务
30 10 1 ? 10 1 2011
每15秒,30秒,45秒时触发任务
15,30,45 * * * * ?
15到45秒内,每秒都触发任务
15-45 * * * * ?
每分钟的每15秒开始触发,5秒触发一次
5/15 * * * * ?
每小时的第0分0秒开始,每三分钟触发一次
0 0/3 * * * ?
星期一到星期五的10点15分0秒触发任务
0 15 10 ? * 2-6
每个月最后一天的10点15分0秒触发任务
0 15 10 l * ?
每个月最后一个工作日的10点15分0秒触发任务
0 15 10 ? * 6l
每个月最后一个星期四的10点15分0秒触发任务
0 15 10 ? * 5l
464

被折叠的 条评论
为什么被折叠?



