是否可以使用whenComplete(...)向CompletableFuture添加多个操作?

时间:2017-01-10 11:27:00

标签: java completable-future

CompletableFuture允许添加在调用complete(...)后未来完成时调用的操作。

我可以使用whenComplete(...) 添加多个BiConsumer操作,以便在完成未来时执行,并且在调用complete(...)方法时执行所有这些操作吗?

1 个答案:

答案 0 :(得分:5)

是的,所有BiConsumer操作都被添加,并且在调用complete(...)时以反向添加顺序执行。

演示此示例的示例可能如下所示:

public class Application {
    public static void main(String[] args) {
        System.out.println("My tests ...");
        CompletableFuture<String> futureString = new CompletableFuture<String>();
        futureString.whenComplete((s,e)->System.out.println("one " + s));
        futureString.whenComplete((s,e)->System.out.println("two " + s));
        futureString.whenComplete((s,e)->System.out.println("three " + s));
        System.out.println("do something else; "+ futureString.isDone());
        futureString.complete("step(s)");
        System.out.println("Done " + futureString.isDone());
    }
}

运行此程序时,打印结果如下所示:

My tests ...
do something else; false 
three step(s)
two step(s)
one step(s)
Done true