首先声明一下 @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"。