首页  >  文章  >  Java  >  Java 9中CompletableFuture和Future之间的区别是什么?

Java 9中CompletableFuture和Future之间的区别是什么?

WBOY
WBOY转载
2023-08-18 16:17:12942浏览

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删除