一、CompletableFuture介绍
Jdk8 CompletableFuture提供了新的异步编程思路,可以对多个异步处理进行编排,实现更复杂的异步处理。其内部使用ForkJoinPool实现异步,使用CompletableFuture可以把回调的实现改为同步调用实现。CompletableFuture提供了50多个API,现在分为场景来做介绍:
1.1 3个服务并发调用,然后对结果进行合并处理,阻塞主线程。
CompletableFuture<String> f1 = CompletableFuture.supplyAsync(() -> {
System.out.println(Thread.currentThread() + "-f1");
return "f1";
});
CompletableFuture<String> f2 = CompletableFuture.supplyAsync(() -> {
System.out.println(Thread.currentThread() + "-f2");
return "f2";
});
CompletableFuture<String> f3 = CompletableFuture.supplyAsync(() -> {
System.out.println(Thread.currentThread() + "-f3");
return "f3";
});
CompletableFuture.allOf(f1, f2, f3).thenApply((Integer) -> {
try {
System.out.println(Thread.currentThread() + f1.get());
System.out.println(Thread.currentThread()