我困惑我是如何应解决这种情况在非阻挡的方式。
考虑两个行动者 Actor1
和 Actor2
内 Actor1
Map<Int, Int> foo() {
List<String> finalList = foo_2();
Map<Int, Int> finalMap = // do stuff with finalList to get Map<Int, Int>;
return finalMap;
}
List<String> foo_2() {
CompletableFuture<List<String>> Querylist = ask(Actor2)
Querylist.get();
return QueryList;
}
目前内foo_2, Querylist.get()
是一个阻止的呼吁。 我想以某种方式解决这一非阻挡的方式。 我创建了一个消息的适配器 Actor2
内部 Actor1
因此,任何消息 Actor2
发会处理的 Actor1
.
我用以下方法,以修改阻止调用
Map<Int, Int> foo() {
CompletionStage<List<String>> finalList = foo_2();
finalList.whenComplete(
// what to do here?
)
// Map<Int, Int> finalMap = // do stuff with finalList to get Map<Int, Int>;
return finalMap;
}
CompletionStage<List<String>> foo_2() {
CompletionStage<List<String>> Querylist = ask(Actor2)
return QueryList;
}
我不知道该如何正确使用CompletionStage构获得同样结果我得到一个阻止未来。获得()call.