五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

@Async的用法和示例

2022-03-08 19:58 作者:雄獅虎豹  | 我要投稿

@Async 注解的用法和示例

@Async 注解的用法和示例背景異步調(diào)用@Async介紹在Spring中啟用@Async示例一:基本使用方式示例二:在同一個類中調(diào)用異步方法示例三:異步方法是static方法示例四:在方法級別上修改默認的執(zhí)行器


背景

通常,在Java中的方法調(diào)用都是同步調(diào)用,比如在A方法中調(diào)用了B方法,則在A調(diào)用B方法之后,必須等待B方法執(zhí)行并返回后,A方法才可以繼續(xù)往下執(zhí)行。這樣容易出現(xiàn)的一個問題就是如果B方法執(zhí)行時間較長,則可能會導(dǎo)致調(diào)用A的請求響應(yīng)遲緩,為了解決這種問題,可以使用Spirng的注解@Async來用異步調(diào)用的方式處理,當然也會有別的多線程方式解決此類問題,本文主要分析@Async在解決此類問題時的用法以及具體的示例。

異步調(diào)用

比如方法A調(diào)用方法B,如果B是一個異步方法,則A方法在調(diào)用B方法之后,不用等待B方法執(zhí)行完成,而是直接往下繼續(xù)執(zhí)行別的代碼。

@Async介紹

在Spring中,使用@Async標注某方法,可以使該方法變成異步方法,這些方法在被調(diào)用的時候,將會在獨立的線程中進行執(zhí)行,調(diào)用者不需等待該方法執(zhí)行完成。

在Spring中啟用@Async

使用@EnableAsync

示例一:基本使用方式

在方法上添加@Async注解

調(diào)用異步方法

執(zhí)行結(jié)果


從執(zhí)行結(jié)果可以看出,main線程中的func1方法在調(diào)用異步方法test2后,沒有等待test2方法執(zhí)行完成,直接執(zhí)行后面的代碼。

示例二:在同一個類中調(diào)用異步方法

方法func2和上面的異步方法test2方法在同一個類中


從執(zhí)行結(jié)果可知,main線程中的func2方法在調(diào)用異步方法test2方法后,等待test2方法執(zhí)行完后,才繼續(xù)往后執(zhí)行。

示例三:異步方法是static方法

異步方法test3是一個static方法

調(diào)用test3的方法

執(zhí)行結(jié)果??梢钥闯鲈?span id="5tt3ttt3t" class="md-pair-s " style="">static方法上添加@Async注解,當調(diào)用該方法時并沒有新啟用一個線程單獨執(zhí)行,而是按順序執(zhí)行代碼,說明異步無效。


示例四:在方法級別上修改默認的執(zhí)行器

自定義一個線程池執(zhí)行器代替默認的執(zhí)行器

自定義的線程池執(zhí)行器

異步方法上使用自定義的執(zhí)行器

調(diào)用test4異步方法

從執(zhí)行結(jié)果可以看出,@Async注解聲明使用指定的自定義的異步執(zhí)行器,已經(jīng)替換了默認的執(zhí)行器。而且調(diào)用異步方法的main線程沒有等待異步方法的執(zhí)行。

說明:新建自定義的執(zhí)行器后,注解@Async默認就會替換成自定義的執(zhí)行器,所以在@Async注解上可以不用指定。



1.01^{365} ≈ 37.7834343329 ? 0.99^{365} ≈ 0.02551796445 ? 相信堅持的力量!


@Async的用法和示例的評論 (共 條)

分享到微博請遵守國家法律
金堂县| 贵阳市| 宝丰县| 洪洞县| 新巴尔虎右旗| 沐川县| 醴陵市| 虞城县| 浮梁县| 屯昌县| 宜黄县| 赤城县| 攀枝花市| 盐亭县| 阜宁县| 静海县| 马尔康县| 秦安县| 汝南县| 鹿泉市| 武隆县| 肇源县| 米脂县| 莱州市| 温宿县| 察雅县| 丹阳市| 同江市| 佛冈县| 高雄县| 临安市| 荔波县| 巴彦淖尔市| 西盟| 濉溪县| 普兰县| 敖汉旗| 卫辉市| 锦屏县| 夏河县| 台南县|