首頁  >  文章  >  Java  >  spring中定時任務taskScheduler的程式碼範例詳細介紹

spring中定時任務taskScheduler的程式碼範例詳細介紹

黄舟
黄舟原創
2017-03-06 10:32:462115瀏覽

這篇文章主要介紹了spring中定時任務taskScheduler的相關資料,文中透過範例程式碼介紹的很詳細,相信對大家具有一定的參考價值,有需要的朋友們下面來一起看看吧。

前言

眾所周知在spring 3.0版本後,自帶了一個定時任務工具,而且使用簡單方便,不用配置文件,可以動態改變執行狀態。也可以使用cron表達式設定定時任務。

被執行的類別要實作Runnable介面

#TaskScheduler介面

TaskScheduler是一個接口,TaskScheduler介面下定義了6個方法


#1、schedule(Runnable task, Trigger trigger);

指定一個觸發器執行定時任務。可以使用CronTrigger來指定Cron表達式,執行定時任務

 CronTrigger t = new CronTrigger("0 0 10,14,16 * * ?");
 taskScheduler.schedule(this, t);

2、schedule(Runnable task, Date startTime);

#指定一個具體時間點執行定時任務,可以動態的指定時間,開啟任務。只執行一次。 (比Timer好用多了。早發現這介面就好了。。)

3、scheduleAtFixedRate(Runnable task, long period);

#立即執行,循環任務,指定一個執行週期(毫秒計時)

#PS:不管上一個週期是否執行完,到時間下個週期就開始執行

4、scheduleAtFixedRate(Runnable task, Date startTime, long period);

#指定時間開始執行,循環任務,指定一個間隔週期(毫秒計時)

PS:不管上一個週期是否執行完,到時間下個週期就開始執行

5、scheduleWithFixedDelay(Runnable task, long delay);

立即執行,循環任務,指定一個間隔週期(毫秒計時)

PS:上一個週期執行完,等待delay時間,下個週期開始執行

##6、

scheduleWithFixedDelay(Runnable task, Date startTime, long delay);

指定時間開始執行,循環任務,指定一個間隔週期(毫秒計時)


#PS:上一個週期執行完,等待delay時間,下個週期開始執行

TaskScheduler下有五個實作類別


1、ConcurrentTaskScheduler


#以目前執行緒執行任務。如果任務簡單,可以直接使用這個類別來執行。快速方便。


PS:這是單一執行緒運行

public class LocTest implements Runnable {
 private ConcurrentTaskScheduler tpts = new ConcurrentTaskScheduler();
 private void start() {
tpts.schedule(this, new Date());
 }
 public void run() {
Thread ct = Thread.currentThread();
System.out.println("current id:"+ct.getId());
System.out.println("current name:"+ct.getName());
 }
 public static void main(String[] args) {
new LocTest().start();
 }
}

2、DefaultManagedTaskScheduler


以目前執行緒執行任務,這是ConcurrentTaskScheduler的子類,並加入了JNDI的支援。和ConcurrentTaskScheduler一樣的用法,需要使用JNDI可以單獨設定


3、ThreadPoolTask​​Scheduler


TaskScheduler介面的預設實作類,多執行緒定時任務執行。可以設定執行線程池數(預設一個線程)。


PS:

  1. #使用前必須先呼叫

    initialize() 【初始化方法】

  2. shutDown()方法,執行完後可以關閉執行緒

##
public class LocTest implements Runnable {
private ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
private void start() {
taskScheduler.setPoolSize(10);
//必须得先初始化,才能使用
taskScheduler.initialize();
taskScheduler.schedule(this, new Date());
}
public void run() {
Thread ct = Thread.currentThread();
System.out.println("current id:"+ct.getId());
System.out.println("current name:"+ct.getName());
}
public static void main(String[] args) {
new LocTest().start();
}
}

4、TimerManagerTaskScheduler

這個沒有使用到,就沒具體了解,有時間再補充。有了解的歡迎來補充。

總結

#以上就是spring中定時任務taskScheduler的程式碼範例詳細介紹的內容,更多相關內容請關注PHP中文網(www.php.cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn