Async注解

203 阅读1分钟

修饰方法成为异步方法, 修饰类时类中所有方法都是异步方法.

使用:

  1. 在启动类加入@EnableAsync开启
  2. 在service层方法中加入@Async注解
  3. 代理实现, 故不能再同一个类中使用(与Transactional类似)
  4. 有返回值时, 由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()方法执行完
}