您可以等待@Async方法,如果你改变他们返回Future。例如像这样:@Componentclass AsyncStuff { @Async public ListenableFuture<?> call1() { /** do things */ return AsyncResult.forValue(null); } @Async public ListenableFuture<?> call2() { /** do other things */ return AsyncResult.forValue(null); }}@Componentclass User { @Autowired AsyncStuff asyncStuff; // @Async methods work only when they are in a different class public void use() throws InterruptedException, ExecutionException { asyncStuff .call1() // starts this execution in another thread .get(); // lets this thread wait for the other thread asyncStuff .call2() // now start the seconds thing .get(); // and wait again }}但它保证比简单地在没有异步的情况下执行所有这些操作要慢,因为所有这些都增加了在线程之间移动执行的开销。调用线程可以代替等待其他线程做事情,而只是在那个时候执行代码本身。