从零搭建项目开发框架-20异步调用@Async

  1. 何为异步调用?
    在解释异步调用之前,我们先来看同步调用的定义;同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果。 异步调用则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行完毕;而是继续执行下面的流程。

    例如, 在某个调用中,需要顺序调用 A, B, C三个过程方法;如他们都是同步调用,则需要将他们都顺序执行完毕之后,方算作过程执行完毕; 如B为一个异步的调用方法,则在执行完A之后,调用B,并不等待B完成,而是执行开始调用C,待C执行完毕之后,就意味着这个过程执行完毕了。

  2. 常规的异步调用处理方式

    在Java中,一般在处理类似的场景之时,都是基于创建独立的线程去完成相应的异步调用逻辑,通过主线程和不同的线程之间的执行流程,从而在启动独立的线程之后,主线程继续执行而不会产生停滞等待的情况。

  3. @Async介绍

    在Spring中,基于@Async标注的方法,称之为异步方法;这些方法将在执行的时候,将会在独立的线程中被执行,调用者无需等待它的完成,即可继续其他的操作。
    该项目中登录时记录登录日志就可以异步调用了。

1、如何在Spring中启用@Async

基于Java配置的启用方式:

@Configuration  
@EnableAsync  
public class SpringAsyncConfig { ... }  

基于XML配置文件的启用方式,配置如下:

<task:executor id="myexecutor" pool-size="5"  />  
<task:annotation-driven executor="myexecutor"/>  

2、异步新增登录日志

@Service
@Configuration
@EnableAsync
public class SysLoginService {
    @Autowired
    private SysUserLoginDao sysUserLoginDao;

    /**
     * 登录时新增登录信息,异步处理
     *
     * @param sysUserLogin
     * @return
     */
    @Async
    public void add(SysUserLogin sysUserLogin) {
        sysUserLoginDao.add(sysUserLogin);
    }

}

这里要掌握的就是一定要加上@Configuration @EnableAsync这两个注解,不然单单加@Async是不起作用的。

源码下载

本阶段详细源码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,682评论 25 708
  • NSThread 第一种:通过NSThread的对象方法 NSThread *thread = [[NSThrea...
    攻城狮GG阅读 859评论 0 3
  • 目标: 1、有个健康智慧的宝宝。 2、坚持不评判不妄语,提高专注力(第15天有意识少说不说无意义的话) 3、坚持每...
    孙煜涵阅读 143评论 0 0
  • 在知识变现如此多元化的今天,掌握学习方法,能让你在人群中快速脱颖而出。身为普通人的我们,学习就成了一门非常重要的技...
    陶壹阅读 156评论 0 1