欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Boot中如何支持異步方法

Boot中如何支持異步方法?

很高興回答你的問(wèn)題

在我們系統(tǒng)中有時(shí)候可能需要異步,也就是一個(gè)請(qǐng)求可能存在兩個(gè)或者以上的線程。

異步用法

@EnableAsync 注解

要使用 @Async,首先需要使用 @EnableAsync 注解開(kāi)啟 Spring Boot 中的異步特性。

@Configuration

@EnableAsync

public class AppConfig {

}

@Async注解

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

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

@Async

void doSomething() {

// this will be executed asynchronously

}

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

與使用 @Scheduled 注釋注釋的方法不同,這些方法可以指定參數(shù),因?yàn)樗鼈冊(cè)谶\(yùn)行時(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<String> returnSomething(int i) {

// this will be executed asynchronously

}

管理 @Async 的異常

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

public class MyAsyncUncaughtExceptionHandler implements AsyncUncaughtExceptionHandler {

@Override

public void handleUncaughtException(Throwable ex, Method method, Object... params) {

// handle exception

}

}

java的異步請(qǐng)求,Boot中如何支持異步方法