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

Java 9에서 CompletableFuture의 delayExecutor() 메서드를 언제 사용해야 합니까?


delayedExecutor() 메소드가 CompletableFuture 에 추가되었습니다. Java 9의 클래스. CompletableFuture delayedExecutor()의 두 가지 오버로드된 메서드를 정의합니다. :첫 번째 메소드는 기본 에서 Executor 객체를 반환합니다. 실행자 CompletableFuture 개체 개체는 지연 및 새 실행자 후에 작업을 실행하는 데 사용합니다. 객체는 작업 실행을 수행할 수 있지만 두 번째 메서드는 Executor 객체도 반환하지만 지연 및 새로운 Executor 후에 이 메서드에 전달하는 Executor 객체입니다. 개체도 작업을 수행할 수 있습니다.

구문

public static Executor delayedExecutor(long delay, TimeUnit unit, Executor executor)
public static Executor delayedExecutor(long delay, TimeUnit unit)

예시

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;

public class DelayedExecutorMethodTest {
   public static void main(String args[]) throws InterruptedException, ExecutionException {
      CompletableFuture<String> future = new CompletableFuture<>();
      future.completeAsync(() -> {
         try {
            System.out.println("inside future: processing data...");
            return "tutorialspoint.com";
         } catch(Throwable e) {
            return "not detected";
         }
      }, CompletableFuture.delayedExecutor(3, TimeUnit.SECONDS))
                          .thenAccept(result -> System.out.println("accept: " + result));
      for(int i = 1; i <= 5; i++) {
         try {
            Thread.sleep(1000);
         } catch(InterruptedException e) {
            e.printStackTrace();
         }
         System.out.println("running outside... " + i + " s");
      }
   }
}

출력

running outside... 1 s
running outside... 2 s
inside future: processing data...
accept: tutorialspoint.com
running outside... 3 s
running outside... 4 s
running outside... 5 s