在開發過程中避免不了要使用定時任務,例如:定時統計資料,上傳資料等等。而springboot的定時任務scheduled預設是單執行緒。所以當乙個類中需要執行的定時方法過多是,任務就會排隊,不按時執行!
下面放上一張截圖,這個是每小時的第十分鐘執行的乙個定時任務:
這是資料入庫的時間。
因為定時任務太多,而定時任務又是單執行緒,導致任務一直排隊。所以定時任務就不按時執行。
這時候就需要配置多執行緒了。
springboot的@async有預設的執行緒池,但是不建議使用。
所以建議自己建立乙個執行緒池!
可以直接在springboot的啟動類中配置執行緒池。
@enablescheduling
//開啟定時任務
@enableasync
//開啟非同步任務,開啟多執行緒的關鍵
public
class
implements
schedulingconfigurer
@override
public
void
configuretasks
(scheduledtaskregistrar taskregistrar)
/** * 非同步執行緒池設定
* 如果所有的任務都使用非同步,執行緒池執行的話,可以不配置同步任務執行緒池。但是使用非同步需要注意的是非同步執行緒池的大小配置。非同步的執行緒池預設是無上限的開啟執行緒數的。
* @return
*/@bean
******asynctaskexecutor ******asynctaskexecutor()
}
建立過執行緒池之後,只需要在定時任務的類或者需要開啟多執行緒的方法上新增上@async註解就可以了。
就像這樣:
SpringBoot 定時任務
第一步 在啟動類中加入如下註解 enablescheduling public class public static void main string args 注意 enablescheduling必須加,否則無法開啟定時任務 第二步 建立定時任務 component public class ...
Spring boot定時任務
最近做專案,需要使用定時任務,半個小時去更新redis資料,於是便學習了一下經驗。希望可以幫到你們。定時任務可使用三種 created by fx on 2017 9 4.component allargsconstructor public class featuredatatask 實現乙個任務...
Spring boot 定時任務
1.在啟動類上加 enablescheduling註解 package com.example.demo import org.springframework.scheduling.annotation.enablescheduling enablescheduling public static ...