对于异步方法调用,从Spring3开始提供了@Async注解,该注解可以被标注在方法上,以便异步地调用该方法。调用者将在调用时立即返回,方法的实际执行将提交给Spring TaskExecutor的任务中,由指定的线程池中的线程执行。
遇到开发人员只会简单的使用@Async注解,而不知其实现原理,更糟糕的是有时会错误的使用。本篇将深入源码分析@Async注解背后的实现原理,避免错误使用。
本文关键词:异步、线程池、代理
@Async
以下是@Async注解的源码,从源码中看到它可以被标注在类或方法上,用于实现方法的异步执行。当被标注在类上时,表明类中的所有方法都被指定的异步执行器执行。
实现原理
为了更基础的分析异步调用背后的实现原理,这里选择使用xml配置文件的方式。使用xml配置文件方式时,一般会配置如下元素:
请记住上面的三个配置,下文将围绕这三个配置进行深入分析。
这里就从task标签解析开始。一般对于这种标签的解析都会有相应的Na