首頁  >  文章  >  Java  >  Java 9中CompletableFuture和Future之間的差異是什麼?

Java 9中CompletableFuture和Future之間的差異是什麼?

WBOY
WBOY轉載
2023-08-18 16:17:12995瀏覽

CompletableFuture8742468051c85b06f0a0af9e3e506b5c 類別在Java中實作了 Future8742468051c85b06f0a0af9e3e506b5c #介面。 CompletableFuture 可以被用來作為已經明確完成的Future。 Future 介面並沒有提供很多功能,我們需要使用get() 方法來取得非同步計算的結果,該方法會被阻塞,因此沒有辦法以非阻塞的方式運行多個依賴任務,而CompletableFuture 類別可以提供鍊式運行多個依賴任務的功能,這些任務以異步的方式運行,因此我們可以創建一個任務鏈,在目前任務的結果可用時觸發下一個任務。

語法

<strong>public class CompletableFuture<T> extends Object implements Future<T>, CompletionStage<T></strong>

Example

翻譯成中文為:

範例

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

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除