gpt4 book ai didi

java - 多个ListenableFutures返回后继续执行

转载 作者:行者123 更新时间:2023-11-29 04:52:57 26 4
gpt4 key购买 nike

我有一个应用程序接受用户命令来执行数据库查找。我解析命令/参数,然后迭代每个命令/参数,调用一个处理程序来获取值并构建查询条件。

但是,到目前为止,这个过程一直是完全同步的。每个处理程序都会执行并添加条件,在循环完成后我可以执行查询。

现在,这些处理程序之一必须联系远程服务器以转换一些数据,这意味着它返回 ListenableFuture .

ListenableFuture<Profile> profile = getProfile("someUserName");

profile.addListener(new Runnable() {
@Override
public void run() {
try {
query.addCondition(Condition.of("user.$id", MatchRule.EQUALS, profile.get().getUniqueId()));
} catch (InterruptedException | ExecutionException e) {
// handle
}
}
}, MoreExecutors.sameThreadExecutor());

我正在尝试确定最佳方法,以确保在 ListenableFuture 之前不会执行我的查询已经完成。让我感到困惑的部分原因是,我需要假设可能有多个待处理的请求。

例如,如果有人输入 p=user1,user2我们需要发出两个请求,所以会有两个 ListenableFuture<Profile>待定。

只有当两者都完成后,我才能执行最终查询。

我该怎么做?

最佳答案

Futures.allAsList允许您获取一堆 ListenableFutures 并得到一个 ListenableFuture,它在所有输入完成时完成并返回结果列表。这听起来正是您所需要的。

关于java - 多个ListenableFutures返回后继续执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34757216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com