spring学习系列 -- 定时器一TimerTask
2015-07-10 14:31
453 查看
spring学习系列 -- 定时器一TimerTask
继承TimerTask,然后创建ScheduledTimerTask设置相关属性,最后吧ScheduledTimerTask添加到TimerFactoryBean中的list中完成配置。<!-- ScheduledTimerTask设置定时器属性 : period=定时器周期;delay=延迟多久启动
86400000代表24个小时;timerTask=执行定时任务的类对象 --
spring定时器一般有两种:
TimerTask、Quartz。本节只讲TimerTask
需要的包:
aopalliance-1.0.jar
commons-logging-1.1.1.jar
spring-aop-3.0.6.RELEASE.jar
spring-asm-3.0.6.RELEASE.jar
spring-beans-3.0.6.RELEASE.jar
spring-context-3.0.6.RELEASE.jar
spring-core-3.0.6.RELEASE.jar
spring-expression-3.0.6.RELEASE.jar
TimerTask实例:同时启动2个定时器,执行任务
定时执行任务的类继承TimerTask:
Java代码
public class EmailReportTask extends TimerTask{
@Override
public void run() {
System.out.println(" EmailReportTask Run... ");
}
}
public class PageReportTask extends TimerTask{
@Override
public void run() {
System.out.println("PageReportTask Run...");
}
}
spring的配置文件:
Xml代码
<!-- Bean -->
<bean id="emailReportTask" class="com.hry.spring.timertask.EmailReportTask" />
<bean id="pageReportTask" class="com.hry.spring.timertask.PageReportTask" />
<!-- ScheduledTimerTask设置定时器属性 : period=定时器周期;delay=延迟多久启动
86400000代表24个小时;timerTask=执行定时任务的类对象 -->
<bean id="emailReportScheduleReportTask"
class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask" ref="emailReportTask" />
<property name="period" value="2000" />
<property name="delay" value="1000" />
</bean>
<bean id="pageReportScheduleReportTask"
class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask" ref="pageReportTask" />
<property name="period" value="2000" />
</bean>
<!-- Spring的TimerFactoryBean负责启动定时任务;
scheduledTimerTasks = 需要启动的定时器任务的列表-->
<bean class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref bean="emailReportScheduleReportTask"/>
<ref bean="pageReportScheduleReportTask"/>
</list>
</property>
</bean>
测试代码:
Java代码
public class TestBaseService {
protected ApplicationContext ctx = new ClassPathXmlApplicationContext(
new String[]{
"classpath:resource/spring.xml"
}
);
@Test
public void timer(){
try{
// 这个是主线程,如果结束了,则定时器也会结束,所有设置时间要长
Thread.sleep(36 * 1000);
}catch(Exception e){
e.printStackTrace();
}
}
}
参考文献:
spring 定时器如何配置
Spring中Quartz的配置
spring定时任务之quartz
Spring定时器的两种实现方式
相关文章推荐
- maven修改项目JDK版本
- JSP——JavaBean
- 【JAVA】JAVA之HelloWorld
- Java基础——线程(二)
- 【翻译】《Java™ I/O, 2nd Edition》-14.1 使用缓冲区复制文件
- Eclipse快捷键大全(转载)
- Java实现Base64算法
- java 如何从jar包中读取资源文件
- JAVA:借用OpenOffice将上传的Word文档转换成Html格式
- 8G内存,怎么配置myeclipse的启动文件
- JavaWeb项目中输入中文搜索出现乱码的解决办法
- gradle 编译android项目 Eclipse
- 那些年我踩过的坑——Java
- java笔记-竞考网错题
- 【JAVA】JAVA之搭建开发环境
- Spring MVC 利用 @ResponseBody 注解返回JSON
- Struts2的实现原理(配图解)
- Java反射
- Java基础之IO流
- 关于spring注解@Transactional使用注意点