spring mvc 使用@Async 注解实现异步操作

  • A+
所属分类:java

正常的代码是顺序执行的,如果需要减少程序执行时间,非业务主流程的部分可以使用异步操作。异步操作也可以理解为并行操作。比如:记录接口日志,邮件通知等,非业务核心主流程,可以使用异步来实现。这样主流程代码执行时间缩短,也增加了系统稳定性。

实现方式:

比如我配置一个线程池,包含5个线程,专门来处理邮件发送。在spring xml 配置文件,加入以下配置:

        <!-- 发送邮件线程池 -->
 	<task:executor id="mailExecutor" pool-size="5" queue-capacity="1000" keep-alive="5"/>

代码使用@Async 注解,来实现异步操作。也就是说这个方法是在单独线程里执行的,不在主线程里运行。

@Service
public class SSLMail
{
 @Async("mailExecutor")
    public void send(String toUserName, String subject, String content)
    {
    }
}

方法调用和普通方法一样。调用代码片段如下:

    @Autowired
    private SSLMail sslMail;
    public void xxfunction(xxReq req)
    {            
            if (!auth(req))
            {
                return getFailResult("ESP0002", "鉴权失败");
            }
            sslMail.send(req.getRecipient(), req.getSubject(), req.getContent());
     }



  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: