真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringBoot中如何支持異步方法-創(chuàng)新互聯(lián)

  • 本人免費整理了Java高級資料,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并發(fā)分布式等教程,一共30G,需要自己領(lǐng)取。
    傳送門:https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q

    公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出海城免費做網(wǎng)站回饋大家。

異步用法

@EnableAsync 注解

@Async 注解

明確指定執(zhí)行器

管理 @Async 的異常

異步用法

@EnableAsync注解

要使用?@Async,首先需要使用?@EnableAsync注解開啟 Spring Boot 中的異步特性。

@Configuration
@EnableAsync
public?class?AppConfig?{
}

更詳細的配置說明,可以參考:AsyncConfigurer

@Async注解

支持的用法

(1)無入?yún)o返回值方法

您可以用?@Async注解修飾方法,這表明這個方法是異步方式調(diào)用。換句話說,程序在調(diào)用此方法時會立即返回,而方法的實際執(zhí)行發(fā)生在已提交給 Spring?TaskExecutor的任務(wù)中。在最簡單的情況下,您可以將注解應(yīng)用于返回 void 的方法,如以下示例所示:

@Async
void?doSomething()?{
????//?this?will?be?executed?asynchronously
}

(2)有入?yún)o返回值方法

與使用?@Scheduled注釋注釋的方法不同,這些方法可以指定參數(shù),因為它們在運行時由調(diào)用者以“正?!狈绞秸{(diào)用,而不是由容器管理的調(diào)度任務(wù)調(diào)用。例如,以下代碼是?@Async注解的合法應(yīng)用:

@Async
void?doSomething(String?s)?{
????//?this?will?be?executed?asynchronously
}

(3)有入?yún)⒂蟹祷刂捣椒?/p>

甚至可以異步調(diào)用返回值的方法。但是,這些方法需要具有?Future類型的返回值。這仍然提供了異步執(zhí)行的好處,以便調(diào)用者可以在調(diào)用?Future上的?get()之前執(zhí)行其他任務(wù)。以下示例顯示如何在返回值的方法上使用@Async

@Async
Future?returnSomething(int?i)?{
????//?this?will?be?executed?asynchronously
}

不支持的用法

@Async不能與生命周期回調(diào)一起使用,例如?@PostConstruct。

要異步初始化 Spring bean,必須使用單獨的初始化 Spring bean,然后在目標(biāo)上調(diào)用?@Async帶注釋的方法,如以下示例所示:

public?class?SampleBeanImpl?implements?SampleBean?{

????@Async
????void?doSomething()?{
????????//?...
????}

}

public?class?SampleBeanInitializer?{

????private?final?SampleBean?bean;

????public?SampleBeanInitializer(SampleBean?bean)?{
????????this.bean?=?bean;
????}

????@PostConstruct
????public?void?initialize()?{
????????bean.doSomething();
????}

}

明確指定執(zhí)行器

默認情況下,在方法上指定?@Async時,使用的執(zhí)行器是在啟用異步支持時配置的執(zhí)行器,即如果使用 XML 或?AsyncConfigurer實現(xiàn)(如果有),則為“annotation-driven”元素。但是,如果需要指示在執(zhí)行給定方法時應(yīng)使用默認值以外的執(zhí)行器,則可以使用?@Async注解的 value 屬性。以下示例顯示了如何執(zhí)行此操作:

@Async("otherExecutor")
void?doSomething(String?s)?{
????//?this?will?be?executed?asynchronously?by?"otherExecutor"
}

在這種情況下,“otherExecutor”可以是 Spring 容器中任何 Executor bean 的名稱,也可以是與任何 Executor 關(guān)聯(lián)的限定符的名稱(例如,使用?元素或 Spring 的?@Qualifier注釋指定) )。

管理?@Async的異常

當(dāng)?@Async方法的返回值類型為?Future型時,很容易管理在方法執(zhí)行期間拋出的異常,因為在調(diào)用?get結(jié)果時會拋出此異常。但是,對于返回值類型為 void 型的方法,異常不會被捕獲且無法傳輸。您可以提供?AsyncUncaughtExceptionHandler來處理此類異常。以下示例顯示了如何執(zhí)行此操作:

public?class?MyAsyncUncaughtExceptionHandler?implements?AsyncUncaughtExceptionHandler?{

????@Override
????public?void?handleUncaughtException(Throwable?ex,?Method?method,?Object...?params)?{
????????//?handle?exception
????}
}

默認情況下,僅記錄異常。您可以使用?AsyncConfigurer或?XML元素定義自定義?AsyncUncaughtExceptionHandler。


創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。


文章名稱:SpringBoot中如何支持異步方法-創(chuàng)新互聯(lián)
本文路徑:http://weahome.cn/article/diiccs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部