CompletableFuture8742468051c85b06f0a0af9e3e506b5c 类在Java中实现了 Future8742468051c85b06f0a0af9e3e506b5c 接口。 CompletableFuture 可以被用作已经显式完成的Future。 Future 接口并没有提供很多功能,我们需要使用 get() 方法来获取异步计算的结果,该方法会被阻塞,因此没有办法以非阻塞的方式运行多个依赖任务,而 CompletableFuture 类可以提供链式运行多个依赖任务的功能,这些任务以异步的方式运行,因此我们可以创建一个任务链,在当前任务的结果可用时触发下一个任务。
<strong>public class CompletableFuture<T> extends Object implements Future<T>, CompletionStage<T></strong>
import java.util.function.Supplier; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; public class CompletableFutureTest { public static void main(String args[]) throws ExecutionException, InterruptedException { Calculator calc = new Calculator(4, 7); <strong>CompletableFuture<Integer></strong> future = CompletableFuture.<strong>supplyAsync</strong>(calc); future.<strong>thenAccept</strong>(result -> { System.out.println(result); }); System.out.println("CompletableFutureTest End.... "); Thread.sleep(10000); } } <strong>// Calculator class</strong> class Calculator implements <strong>Supplier<Integer></strong> { private int x, y; public Calculator(int x, int y) { this.x = x; this.y = y; } <strong>@Override</strong> public Integer get() { try { Thread.sleep(3000); } catch(InterruptedException e) { e.printStackTrace(); } return x + y; } }
<strong>CompletableFutureTest End.... 11</strong>
以上是Java 9中CompletableFuture和Future之间的区别是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!