如何使用 CompletableFuture 进行两次 DB 调用并等待结果

问题描述

假设我有一种情况,我调用两个存储库来获取项目。

CompletableFuture<Optional<Account>> accountCompleteableFuture = CompletableFuture.supplyAsync(() ->AccountRepository.findById(accountId));

CompletableFuture<Optional<User>> userCompletableFuture = CompletableFuture.supplyAsync(() ->userRepository.findById(userId));

当两者都完成返回结果后,我如何获得反馈?传统上,我会一一调用,然后执行剩余的逻辑。在这里我想加快这个过程。我试图做一些类似 thenCombine() 的事情,但两者都是不同的对象,我无法在该 lambda 中编写逻辑。任何人都可以提出更好的方法吗?

解决方法

CompletableFuture.allOf( groupCompletableFuture,userCompletableFuture ).join();