【发布时间】:2022-01-13 12:54:05
【问题描述】:
我正在向用户返回以下响应
class FinalResponseDTO {
List<Service1ResponseDTO> service1ResponseDTO;
Long totalCount;
List<Service2ResponseDTO> service2ResponseDTO;
}
到目前为止,我正在进行三个连续调用来计算这个FinalResponseDTO,每个调用都可以独立于其他调用运行。我尝试将三个不同的CompletableFuture 设为:
CompletableFuture<List<Service1ResponseDTO> future1 = CompletableFuture.supplyAsync(() -> service1.callMethod1());
CompletableFuture<Long> future2 = CompletableFuture.supplyAsync(() -> service2.callMethod2());
CompletableFuture<Service2ResponseDTO> future3 = CompletableFuture.supplyAsync(() -> service3.callMethod3());
如果我拨打CompletableFuture.allOf(future1, future2, future3).join(); 还是应该拨打CompletableFuture.allOf(future1, future2, future3).get();?即使我调用这些join 或get 中的任何一个,那么我应该如何从中构造FinalResponseDTO。我是CompletableFuture 等 Java 8 并发功能的新手,我很困惑,因为每个未来的每个返回类型都不同,我应该如何获得所有这些未来的组合响应,然后构造我的最终输出?
【问题讨论】:
标签: java multithreading asynchronous completable-future