开发学院

您的位置:首页>教程>正文

教程正文

Java 9 CompletableFuture API改进

Java 9 CompletableFuture API改进

  CompletableFuture类是在Java 8中引入的,用来表示未来可以通过设置其值和状态显式来完成。它可以作为java.util.concurrent.CompletionStage使用。它支持将来完成时触发的相关函数和动作。在Java 9中,CompletableFuture API得到了进一步的增强。以下是对API所做的相关更改。

  •   支持延迟和超时。

  •   改进了对子类化的支持。

  •   添加了新的工厂方法。

支持延迟和超时

public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)

  如果在给定超时之前没有完成,这个方法用给定值完成这个CompletableFuture。

public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)

  如果在给定超时之前没有完成,这个方法例外地用TimeOutException完成了这个CompletableFuture。

改进了对子类化的支持

public Executor defaultExecutor()

  它返回未指定执行器的异步方法使用的默认执行器。这个方法可以在子类中被重写,以返回一个执行器,至少提供一个独立的线程。

public <U> CompletableFuture<U> newIncompleteFuture()

  返回要由CompletionStage方法返回的类型的新的不完整CompleteTable Future。CompletableFuture类的子类应该重写此方法,以返回与此CompletableFuture相同类的实例。默认实现返回completetablefuture类的实例。

添加了新的工厂方法

public static <U> CompletableFuture<U> completedFuture(U value)

  这个工厂方法返回一个新的completetablefuture,它已经用给定值完成了。

public static <U> CompletionStage<U> completedStage(U value)

  这个工厂方法返回一个新的CompletionStage,这个新的CompletionStage已经用给定值完成了,并且只支持接口CompletionStage中存在的那些方法。

public static <U> CompletionStage<U> failedStage(Throwable ex)

  这个工厂方法返回一个新的CompletionStage,这个新的CompletionStage在给定的异常情况下已经完成了,并且只支持接口CompletionStage中存在的那些方法。