国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

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

@Async的用法和示例

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

@Async 注解的用法和示例

@Async 注解的用法和示例背景異步調(diào)用@Async介紹在Spring中啟用@Async示例一:基本使用方式示例二:在同一個類中調(diào)用異步方法示例三:異步方法是static方法示例四:在方法級別上修改默認(rèn)的執(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)用的方式處理,當(dāng)然也會有別的多線程方式解決此類問題,本文主要分析@Async在解決此類問題時的用法以及具體的示例。

異步調(diào)用

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

@Async介紹

在Spring中,使用@Async標(biāo)注某方法,可以使該方法變成異步方法,這些方法在被調(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é)果。可以看出在static方法上添加@Async注解,當(dāng)調(diào)用該方法時并沒有新啟用一個線程單獨執(zhí)行,而是按順序執(zhí)行代碼,說明異步無效。


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

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

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

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

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

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

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



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


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

分享到微博請遵守國家法律
潍坊市| 许昌市| 南城县| 阜平县| 寿光市| 商洛市| 彰化市| 彭州市| 湖州市| 霍州市| 加查县| 沂水县| 承德市| 会泽县| 全椒县| 图木舒克市| 新化县| 林口县| 墨竹工卡县| 内江市| 浮山县| 海安县| 保山市| 教育| 吉首市| 都匀市| 闵行区| 石屏县| 青浦区| 抚顺市| 保康县| 察隅县| 山阴县| 莲花县| 得荣县| 乳源| 岑巩县| 刚察县| 巍山| 密山市| 崇仁县|