是否可以使用 whenComplete(...) 向 CompletableFuture 添加多个操作?
Is it possible to add multiple actions to a CompletableFuture with whenComplete(...)?
class CompletableFuture
允许添加一个动作,在调用 complete(...)
之后未来完成时调用。
我可以使用whenComplete(...)
来添加多个BiConsumer操作用于完成未来时执行并且在调用complete(...)
方法时全部执行吗?
是的,所有 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
class CompletableFuture
允许添加一个动作,在调用 complete(...)
之后未来完成时调用。
我可以使用whenComplete(...)
来添加多个BiConsumer操作用于完成未来时执行并且在调用complete(...)
方法时全部执行吗?
是的,所有 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