使用场景:调用外部接口很慢,数据交互允许异步,那么把调用外部接口方法改为异步,以前的做法是开新线程做异步调用。
一,Application 加注解 @EnableAsync 开启异步。
二,需要异步的方法上加注解 @Async。
注意:
不能为静态方法;
调用处不能在同一个类里;
也可以加在类上,这样类下面的所有方法被其他类调用的时候都是异步的。
三,例如: asyncSleep 方法需要异步执行,加注解 @Async。
@Override
@Async
public void asyncSleep() throws InterruptedException {
System.out.println("次线程 " + Thread.currentThread().getName());
System.out.println("开始异步休眠3秒");
Thread.sleep(3000);
System.out.println("异步休眠休眠结束");
}
四,测试调用
public void getAsynHello() throws InterruptedException {
System.out.println("Stephen-Start");
syncService.asyncSleep();
System.out.println("Stephen-End");
}
输出:
Stephen-Start
Stephen-End
次线程 threadPoolTaskExecutor-2
开始异步休眠3秒
异步休眠休眠结束