千萬不要這樣使用@Async注解


在實際的項目中,對於一些用時比較長的代碼片段或者函數,我們可以采用異步的方式來執行,這樣就不會影響整體的流程了。

比如我在一個用戶請求中需要上傳一些文件,但是上傳文件的耗時會相對來說比較長,這個時候如果上傳文件的成功與否不影響主流程的話,就可以把上傳文件的操作異步化,

在spring boot中比較常見的方式就是把要異步執行的代碼片段封裝成一個函數,然后在函數頭使用@Async注解,就可以實現代碼的異步執行(當然首先得在啟動類上加上@EnableAsync注解了)。

具體的使用方式這里我也就不再演示了,網上教大家使用@Async的很多。

今天我要講的並不是怎么去使用@Async注解,而是講我在實際開發過程中遇到的一個坑,希望你不要再犯。

首先,再明確一點,學習一個知識,第一步是找到相應的官網或是比較權威的網站。

那么這個坑是什么呢?就是如果你在同一個類里面調用一個自己的被@Async修飾的函數時,這個函數將不會被異步執行,它依然是同步執行的

所以你如果沒有經過測試就想當然的以為只要在方法頭加上@Async就能達到異步的效果,那么你很有可能會得到相反的效果。這個是很要命的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM