SpringMVC實現非同步任務支援

2021-10-12 17:31:26 字數 1185 閱讀 5649

在http協議中,基於request<=>response互動模型。不僅支援同步請求模式,也支援非同步請求方式。而在非同步任務場景中,避免客戶端進入阻塞等待,請求達到並立即響應。後端一般借助執行緒池原理,初始化各個引數,將任務丟給執行緒池慢慢處理,同時響應客戶端即可

/**

* ①利用@enableasync 註解開啟非同步任務支援。

* ②配置類實現asyncconfigurer 介面並重寫getasyncexecutor 方法,並返回乙個

* threadpooltaskexecutor ,這樣我們就獲得了乙個基於執行緒池taskexecutor。

*/@configuration

@enableasync

public

class

taskexecutorconfig

implements

asyncconfigurer

@override

public asyncuncaughtexceptionhandler getasyncuncaughtexceptionhandler()

}

這裡執行緒池的執行原理不再贅述了。接下來,在我們的業務類中新增非同步註解 @async開啟非同步支援。這裡,我們可以理解triggerdata是乙個十分耗時的過程

@override

@async

public integer triggerdata()

packagereport

(usercoursetmpinfolist)

;return0;

}

並在controller中呼叫非同步方法

@apioperation

(value =

"初始化年報資料"

)(value =

"/initannualreport"

, method = requestmethod.get)

@responsebody

public commonresultdto initannualreport()

return commonresultdto.

createsuccessdto()

;}

非同步任務運用場景非常常見,springmvc中若對某個介面要求非同步響應,可以通過配置非同步任務實現

flask實現非同步任務

最近在開發同步mysql資料到redis的介面,因為資料同步涉及各種增刪查改,如果用同步實現,可能回造成連線超時 堵塞,所以,使用python實現非同步任務。from flask import flask import time from concurrent.futures import thre...

flask非同步操作 flask實現非同步任務

最近在開發同步mysql資料到redis的介面,因為資料同步涉及各種增刪查改,如果用同步實現,可能回造成連線超時 堵塞,所以,使用python實現非同步任務。實現 from flask import flask import time from concurrent.futures import t...

非同步 非同步任務

非同步任務 記錄一下學習完springboot後進行使用非同步方法時的筆記 service層 author yesijie date 2019 11 29 15 25 service public class asyncc catch interruptedexception e system.ou...