Computer >> Máy Tính >  >> Lập trình >> Java

Sự khác biệt giữa CompletableFuture và Future trong Java 9?


CompletableFuture triển khai lớp học Tương lai giao diện trong Java. CompletableFuture có thể được sử dụng như một Tương lai đã hoàn thành một cách rõ ràng. Tương lai giao diện không cung cấp nhiều tính năng, chúng tôi cần lấy kết quả của tính toán không đồng bộ bằng cách sử dụng get () phương pháp này bị chặn, vì vậy không có phạm vi để chạy nhiều tác vụ phụ thuộc trong một không chặn thời trang trong khi CompleteFuture lớp có thể cung cấp chức năng để chuỗi nhiều tác vụ phụ thuộc chạy không đồng bộ , vì vậy chúng tôi có thể tạo một chuỗi nhiệm vụ trong đó tác vụ tiếp theo được kích hoạt khi kết quả của tác vụ hiện tại có sẵn.

Cú pháp

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

Ví dụ

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);
      CompletableFuture<Integer> future = CompletableFuture.supplyAsync(calc);
      future.thenAccept(result -> {
         System.out.println(result);
      });
      System.out.println("CompletableFutureTest End.... ");
      Thread.sleep(10000);
   }
}

// Calculator class
class Calculator implements Supplier<Integer> {
   private int x, y;
   public Calculator(int x, int y) {
      this.x = x;
      this.y = y;
   }
   @Override
   public Integer get() {
      try {
         Thread.sleep(3000);
      } catch(InterruptedException e) {
         e.printStackTrace();
      }
      return x + y;
   }
}

Đầu ra

CompletableFutureTest End....
11