@Async实现异步调用

使用@Async实现异步调用

启动main类上加上@EnableAsync ,需要执行异步方法上加入@Async

相当于启了一个线程进行执行

示例

controller中

@ResponseBody
@RequestMapping("/sedSms")
public String sedSms() {
    System.out.println("###indexController### 1");
    userService.sedSms();
    System.out.println("###indexController### 4");
    return "success";
}

userService中

@Async
public void sedSms() {
    System.out.println("##sedSms##开始执行..  2");
    for (int i = 0; i < 5; i++) {
        try {
            Thread.sleep(1000);
        } catch (Exception e) {
            // TODO: handle exception
        }
        System.out.println("i:" + i);
    }
    System.out.println("##sedSms##结束执行..  3");
}

相当于userService中的sedSms创建了一个子线程去执行。

当访问localhost:8080/sedSms时,主线程则先输出

###indexController### 1
###indexController### 4
....
##sedSms##开始执行..  2
##sedSms##结束执行..  3

Last updated