Spring Async Task返回Future

时间:2015-09-14 18:47:09

标签: java spring spring-boot

我正在开发一个服务,它调用多个彼此独立的外部服务。我整理所有这些服务的响应并将其作为综合响应返回。由于这些不是相互依赖的,我使用Spring的@Async功能来并行执行所有这些活动。我正在关注此链接中提供的示例

  

https://spring.io/guides/gs/async-method/

这里,while循环用于等待直到获得所有响应 -

    while (!(page1.isDone() && page2.isDone() && page3.isDone())) {
        Thread.sleep(10); //10-millisecond pause between each check
    }

我知道这是一个示例代码,旨在解释它有效的概念。但是,在企业应用程序中,可以使用类似于上面显示的while循环,还是应该采用不同的方法?如果必须采用不同的方法,那么该方法优于使用while循环的优势是什么?

1 个答案:

答案 0 :(得分:2)

你不能使用Future.get()吗?这是一个阻塞电话。它会确保等到结果准备好。你可以这样做:

List<Future<?>> results = Lists.newArrayList();
results.add(page1.get());
results.add(page2.get());
results.add(page3.get());