springboot定時任務開啟多執行緒

2021-10-23 03:55:45 字數 1040 閱讀 3898

在開發過程中避免不了要使用定時任務,例如:定時統計資料,上傳資料等等。而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 ...