在使用spring task中,重寫org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler實現接口org.springframework.scheduling.TaskScheduler中定時器的schedule系列方法。java
TaskScheduler接口方法:web
ScheduledFuture<?> schedule(Runnable task, Trigger trigger); ScheduledFuture<?> schedule(Runnable task, Date startTime); ScheduledFuture<?> scheduleAtFixedRate(Runnable task, Date startTime, long period); ScheduledFuture<?> scheduleAtFixedRate(Runnable task, long period); ScheduledFuture<?> scheduleWithFixedDelay(Runnable task, Date startTime, long delay); ScheduledFuture<?> scheduleWithFixedDelay(Runnable task, long delay);
實現代碼以下:spring
package com.zk.schedule; import java.util.Date; import java.util.concurrent.ScheduledFuture; import org.springframework.scheduling.Trigger; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; public class scheduleTest extends ThreadPoolTaskScheduler { @Override public ScheduledFuture<?> schedule(Runnable task, Trigger trigger) { // TODO Auto-generated method stub return super.schedule(this.runnableTest(task), trigger); } @Override public ScheduledFuture<?> schedule(Runnable task, Date startTime) { // TODO Auto-generated method stub return super.schedule(this.runnableTest(task), startTime); } @Override public ScheduledFuture<?> scheduleAtFixedRate(Runnable task, Date startTime, long period) { // TODO Auto-generated method stub return super.scheduleAtFixedRate(this.runnableTest(task), startTime, period); } @Override public ScheduledFuture<?> scheduleAtFixedRate(Runnable task, long period) { // TODO Auto-generated method stub return super.scheduleWithFixedDelay(this.runnableTest(task), period); } @Override public ScheduledFuture<?> scheduleWithFixedDelay(Runnable task, Date startTime, long delay) { // TODO Auto-generated method stub return super.scheduleWithFixedDelay(this.runnableTest(task), startTime, delay); } @Override public ScheduledFuture<?> scheduleWithFixedDelay(Runnable task, long delay) { // TODO Auto-generated method stub return super.scheduleWithFixedDelay(this.runnableTest(task), delay); } public Runnable runnableTest(Runnable task) { return new Runnable() { @Override public void run() { // TODO Auto-generated method stub System.out.println("==test=="); } }; } }
-----express
配置文件以下:ide
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <bean id="scheduletest" class="com.zk.schedule.scheduleTest" > </bean> <bean id="simpleTask" class="com.zk.schedule.SimpleTask"/> <bean id="initBean" class="com.zk.schedule.InitBeanTest"></bean> <task:scheduled-tasks scheduler="scheduletest"> <task:scheduled ref="simpleTask" method="print" fixed-rate="5000"/> </task:scheduled-tasks> </beans>
SimpleTask的源碼:this
package com.zk.schedule; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class SimpleTask { private static int i = 0; @Scheduled(fixedDelay = 1000) public void print() { System.out.println("===========start!========="); System.out.println("I:" + i++); System.out.println("=========== end !========="); } }
能夠根據配置文件中的(下面是task:scheduled的不一樣配置方式)spa
<task:scheduled ref="simpleTask" method="print" fixed-rate="5000"/>code
<task:scheduled ref="taskTest" method="test" cron="0 * * * * ?" />orm
cron express配置:xml
* * * * * * * 從左到右依次是:秒、分、小時、日、月、周、年
配置方式對應不一樣的Scheduled方法,執行方法runnableTest中的操做。