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

Khi nào thì sử dụng phương thức delayExecutor () của CompletableFuture trong Java 9?


delayExecutor () phương thức đã được thêm vào CompletableFuture lớp trong Java 9. CompletableFuture xác định hai phương thức được nạp chồng của delayExecutor () :phương thức đầu tiên trả về một đối tượng Executor từ default Người thừa hành phản đối CompletableFuture đối tượng sử dụng để thực thi tác vụ sau thời gian trì hoãn và Người thực thi mới đối tượng có thể thực hiện tác vụ trong khi phương thức thứ hai cũng trả về một đối tượng Executor nhưng là một đối tượng Executor mà chúng tôi chuyển vào phương thức này sau thời gian trì hoãn và Người thực thi mới đối tượng cũng có thể thực hiện tác vụ.

Cú pháp

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

Ví dụ

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

Đầu ra

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