如果我在CompletableFuture上使用thenCompose并分配它,我有2个CompletableFutures吗?

时间:2017-07-31 20:01:59

标签: java future completable-future

说我遇到如下情况:

CompletableFuture<Object1> f1 = Class1.doSomething();
CompletableFuture<Object2> f2 = Class2.doSomethingElse(f1);
boolean b = doAnotherThing(f2);

Class2使用thenCompose()并返回不同的对象类型

CompletableFuture<Object2> doSomethingElse(CompletableFuture<Object1> f) {
return f.thenCompose(s -> {...});
那么我有2个期货吗?我需要做什么:

CompletableFuture.allOf(f1, f2);

作业如何影响未来?

2 个答案:

答案 0 :(得分:1)

你有两个不同的可完成期货。 f1结果将Object1 doSomething结果f2Object2将使用doSomethingElse中匿名函数的f2结果完成f1。但是,由于f2取决于with urllib.request.urlopen(url) as response:的结果,因此您只需等待<td>...</td>完成即可知道这两项任务都已完成。

答案 1 :(得分:0)

根据java文档,然后撰写:

  

从界面复制的描述:CompletionStage返回一个新的   CompletionStage,当这个阶段正常完成时,执行   将此阶段作为所提供函数的参数。见   有关例外情况的规则的CompletionStage文档   完成。

它返回一个新的CompletableFuture

http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html#thenCompose-java.util.function.Function-