springboot開啟非同步任務

2021-10-05 18:18:40 字數 1410 閱讀 2899

1、在啟動類裡面使用@enableasync註解開啟功能,自動掃瞄

public

class

}

2、封裝非同步任務類,不能直接寫到controller中

@async //加在類中某個方法前,代表某個方法是非同步任務,加在類前,代表類中所有任務都是非同步任務

@component //交給spring容器管理,自動掃瞄

public

class

asynctask

public

void

task2()

throws interruptedexception

public

void

task3()

throws interruptedexception

//獲取非同步結果

public future

task4()

throws interruptedexception

public future

task5()

throws interruptedexception

public future

task6()

throws interruptedexception

}

注釋:future用來控制非同步任務,通過isdone方法判斷非同步任務是否完成
public object asynctask()

throws interruptedexception

測試結果
count:8 //主任務用時

task1總用時1001

task2總用時2001

task3總用時3001

3.2一種等非同步任務執行完,結束主任務

("asynctask2"

)public object asynctask2()

throws interruptedexception

}long end = system.

currenttimemillis()

;long total = end-begin;

system.out.

println

("執行總耗時="

+total)

;return jsondata.

buildsuccess

(total);}

測試結果

任務6耗時=1001

任務4耗時=2001

任務5耗時=3001

執行總耗時=3034 //主任務用時

如果要測試同步,則把@async注釋掉

springboot整合定時任務與非同步任務

新增配置資訊 spring給我們配的執行緒池 spring task execution pool core size 5 max size 50建立乙個定時任務配置類 enablescheduling 開啟定時任務功能 enableasync 開啟非同步任務功能 開啟非同步任務功能 enablea...

SpringBoot執行有返回值的非同步任務

springboot如何使用多執行緒處理非同步任務,並且是代返回值的。比如,我乙個controller層的介面,呼叫到service層,在對應的service方法中有三個方法,這三個方法都是去調dao層查詢資料庫資料,每個查詢平均耗時5s,最後將這三個查詢的結果進行合併計算。如果不採用非同步查詢的至...

redis crontab php非同步處理任務

2016年1月8日 16 08 43 星期五 情景 使用者登入日誌,發郵件,發簡訊等等實時性要求不怎麼高的業務通常會非同步執行 之前接觸過幾種redis crontab配套的實現方法,比如 crontab定時執行curl指令碼 1.用curl 訪問url執行php指令碼去pop佇列 2.php程式p...