springBoot 注解式@Async多线程异步调用

springBoot | 2019-11-19 11:42:08

首先声明一下 @Async 是 spring自带 的 多线程,使用注解会自动开启一个线程来异步调用,网上有很多 和 spring cloud 联系在一起,是可以在spring cloud框架下使用,但和spring cloud 没有什么关联。下面就介绍 @Async 注解的使用方法。

 

1.首先搭建spring boot 项目

这个很简单 不多说

2.编写异步方法

@Component
public class AsyncTasks {

    @Async
    public String doTask(){
        Thread.sleep(1000);
        System.out.println("Asynctask Start");
        return "AsyncTask Finished";
    }

}

 

3.测试类

@RestController
public class AsyncTaskController {

    @Autowired
    AsyncTasks asyncTasks;

    /**
     * 测试异步任务。
     *
     * @return
     * @throws Exception
     */
    @GetMapping("/task")
    public String task() throws Exception {
        String result=asyncTasks.doTask();
		System.out.println("controller call");
        return result;
    }
}

 

4.启动类

@SpringBootApplication
@EnableAsync //启用异步调用
public class MsAsyncApplication {

    public static void main(String[] args) {
        SpringApplication.run(MsAsyncApplication.class, args);
    }
}

 

5.线程池

@Async注解 调用的多线程 使用了 spring 默认的线程池,你可以配置线程池的属性,当然还有其他属性也可以配置

spring.task.execution.pool.core-size=20

 

6.测试

访问 localhost:8080/task,会先打印 "controller call" 然后再打印 “Asynctask Start”说明异步调用成功!

如果去掉 @Async注解,会先等待 打印 “Asynctask Start”,再依次打印 "controller call"。

 

登录后即可回复 登录 | 注册
    
关注编程学问公众号