diff --git a/docs/.vuepress/sidebar/index.ts b/docs/.vuepress/sidebar/index.ts index 575b5aae..4269a602 100644 --- a/docs/.vuepress/sidebar/index.ts +++ b/docs/.vuepress/sidebar/index.ts @@ -414,6 +414,7 @@ export default sidebar({ "spring-transaction", "spring-design-patterns-summary", "spring-boot-auto-assembly-principles", + "async", ], }, ], diff --git a/docs/system-design/framework/spring/Async.md b/docs/system-design/framework/spring/Async.md index 8495ae71..c751249d 100644 --- a/docs/system-design/framework/spring/Async.md +++ b/docs/system-design/framework/spring/Async.md @@ -1,8 +1,15 @@ +--- +title: Async 注解原理分析 +category: 框架 +tag: + - Spring +--- + # `@Async` 原理分析 `@Async` 注解由 Spring 框架提供,被该注解标注的类或方法会在 **异步线程** 中执行。这意味着当方法被调用时,调用者将不会等待该方法执行完成,而是可以继续执行后续的代码。 -**原理概述:** `@Async` 可以异步执行任务,本质上是使用 **动态代理** 来实现的。通过 Spring 中的后置处理器 `BeanPostProcessor` 为使用 `@Async` 注解的类创建动态代理,之后 `@Async` 注解方法的调用会被动态代理拦截,在拦截器中将方法的执行封装为异步任务提交给线程池处理。 +**原理介绍:** `@Async` 可以异步执行任务,本质上是使用 **动态代理** 来实现的。通过 Spring 中的后置处理器 `BeanPostProcessor` 为使用 `@Async` 注解的类创建动态代理,之后 `@Async` 注解方法的调用会被动态代理拦截,在拦截器中将方法的执行封装为异步任务提交给线程池处理。 开始讲解 `@Async` 的原理之前,我们先来看看`@Async` 使用。