package com.tht.common.job.spring.general;
import org.apache.log4j.Logger;
/**
* Created by IntelliJ IDEA.
* User: liuwen
* Date: 2010-11-6
* Time: 20:07:46
* To change this template use File | Settings | File Templates.
*/
public class Task {
Logger log=Logger.getLogger(Task.class);
/**
* 需要执行的任务
*/
public void execute(){
log.info("开始执行任务了。。。。");
}
}
beans-config-general.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- 时钟任务,执行任务时,会调用该类中的 run()方法,来执行。。。 -->
<bean id="demoTask" class="com.tht.common.job.spring.general.Task"/>
<!--指定任务方的调用-->
<bean id="timerTaskBean" class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean">
<property name="targetObject" ref="demoTask"></property>
<property name="targetMethod" value="execute"></property>
</bean>
<bean id="scheduledTimerTask"
class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask" ref="timerTaskBean"/>
<property name="period" value="5000"/><!--5000毫秒 即每隔5秒执行定时任务 -->
<property name="delay" value="1000"/><!--1000毫秒 即1秒后 执行定时任务 -->
</bean>
<bean id="timerFactoryBean"
class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref bean="scheduledTimerTask"/>
</list>
</property>
</bean>
</beans>
package com.tht.common.job.spring.general;
import com.tht.common.job.spring.DemoTask;
import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Timer;
/**
* Created by IntelliJ IDEA.
* User: liuwen
* Date: 2010-11-6
* Time: 19:43:29
* To change this template use File | Settings | File Templates.
* 启动类,并控制何时关闭时钟任务
*/
public class TimerTaskDemo {
static Logger log=Logger.getLogger(DemoTask.class);
public static void main(String[] args){
ApplicationContext context=new ClassPathXmlApplicationContext("beans-config-general.xml");
log.info("启动任务。。。。。。");
log.info("请输入exit,关闭任务");
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
while(true){
try {
if(reader!=null && "exit".equals(reader.readLine())){
break;
}
} catch (IOException e) {
log.error(e.getMessage(), e.fillInStackTrace());
}
}
Timer timer =(Timer)context.getBean("timerFactoryBean");
timer.cancel();
}
}