色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

Boot中如何支持異步方法

林子帆2年前12瀏覽0評論

Boot中如何支持異步方法?

很高興回答你的問題

在我們系統中有時候可能需要異步,也就是一個請求可能存在兩個或者以上的線程。

異步用法

@EnableAsync 注解

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

@Configuration

@EnableAsync

public class AppConfig {

}

@Async注解

1. 無入參無返回值方法

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

@Async

void doSomething() {

// this will be executed asynchronously

}

2. 有入參無返回值方法

與使用 @Scheduled 注釋注釋的方法不同,這些方法可以指定參數,因為它們在運行時由調用者以“正常”方式調用,而不是由容器管理的調度任務調用。例如,以下代碼是 @Async 注解的合法應用:

@Async

void doSomething(String s) {

// this will be executed asynchronously

}

3. 有入參有返回值方法

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

@Async

Future<String> returnSomething(int i) {

// this will be executed asynchronously

}

管理 @Async 的異常

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

public class MyAsyncUncaughtExceptionHandler implements AsyncUncaughtExceptionHandler {

@Override

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

// handle exception

}

}

java的異步請求,Boot中如何支持異步方法