緊接上一篇文章,有大神評論說基於WebSyncTask
的異步任務處理和基於註解@Async
的異步任務處理之間有什麼區別,其實大神評論的時候我也不清楚到底啥區別,因此就去學了一波!藉此機會,總結以下:linux
@@EnableAsync
註解,並保證Spring可以掃描獲得該註解@Async
定義FutureResult
獲取對於基於註解的異步任務編程示例代碼,小編已經將代碼合併到上篇博客的代碼中:nginx
代碼地址爲:github.com/SmallerCode…git
哈哈,給小編個start嘛!github
異步的概念小編以前也有說起過,很簡單的道理就是我找你辦事,我不用等你把事情辦完,我又能夠脫身去作別的事情了,舉個例子就是當你發微信給你朋友,說成留言可能會更準確,等你朋友看到後把事情辦好通知你就能夠了。固然對於web請求響應而言,異步能夠理解爲將當前處理請求的線程釋放掉,後臺偷偷開啓一個線程去執行,執行完成以後再返回,讓處理請求的線程能夠去處理其餘進來的請求。web
nginx之因此併發那麼優秀,我以爲linux的epoll
模型能夠了解下。還有,能夠了解下servlet 3.0
以後對異步的支持。編程
因爲處理請求的線程已經被釋放掉,所以要求咱們的異步任務線程要和當前請求的上下文進行關聯,才能正常的將數據響應出去。異步任務不永遠都是順利的,可能有以下三種狀況:微信
void
聲明對於獲取返回值處理併發
採用ResultFuture
便可返回一個Future
對象,經過Future
對象的get
方法便可獲得返回值。異步
對於異常信息處理線程
基於註解的異步任務異常處理和基於WebAsynctask
不一樣,前者採用AsyncConfigurer
結合自定義異常類AsyncUncaughtExceptionHandler
的實現類進行處理。
謝謝閱讀,全部上面講到的代碼實現,均可以在上面的github地址看到,若有錯誤,歡迎pr,若是對你有幫助,請給個star,麼麼噠!