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...