spring中的ThreadPoolTaskSchedule使用

在使用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中的操做。

 

相關文章
相關標籤/搜索