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中文網其他相關文章!