修饰方法成为异步方法, 修饰类时类中所有方法都是异步方法.
使用:
- 在启动类加入
@EnableAsync开启 - 在service层方法中加入
@Async注解 - 代理实现, 故不能再同一个类中使用(与Transactional类似)
- 有返回值时, 由Future接受.
//service
@Async
public Future<String> async() throws InterruptedException {
Thread.sleep(5000);
return new AsyncResult<>("123");
}
//controller
public void test() throws ExceptionException {
Future<String> async = serviceTest.async();
async.get();//获取返回值"123". 调用async()时并不会立刻执行, 而是等到get()时才执行, 并且程序会阻塞在这里等待async()方法执行完
}