Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java 9에서 CompletableFuture와 Future의 차이점은 무엇입니까?


CompletableFuture 클래스는 미래 를 구현합니다. 자바의 인터페이스. CompletableFuture 명시적으로 완료된 Future로 사용할 수 있습니다. 미래 인터페이스는 많은 기능을 제공하지 않으므로 get()을 사용하여 비동기 계산 결과를 가져와야 합니다. 메소드가 차단되므로 비차단에서 여러 종속 작업을 실행할 범위가 없습니다. 패션인 반면 CompleteFuture 클래스는 비동기적으로 실행되는 여러 종속 작업을 연결하는 기능을 제공할 수 있습니다. , 따라서 현재 작업의 결과를 사용할 수 있을 때 다음 작업이 트리거되는 작업 체인을 만들 수 있습니다.

구문

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

예시

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;
   }
}

출력

CompletableFutureTest End....
11