Java9 CompletableFuture API改进

Java9 CompletableFuture API改进

Java 8引入了CompletableFuture类来表示可以通过设置其值和状态来完成的Future。可以将其用作java.util.concurrent.CompletionStage。它支持在Future完成时触发的依赖函数和操作。在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()

此方法返回用于未指定Executor的异步方法的默认Executor。可以在子类中重写此方法,以返回一个Executor,以提供至少一个独立线程。

public <U> CompletableFuture<U> newIncompleteFuture()

返回一个新的不完整的CompletableFuture,该CompletableFuture的返回类型将由CompletionStage方法返回。CompletableFuture类的子类应该覆盖此方法,以返回与此CompletableFuture相同类的实例。默认实现返回一个CompletableFuture类的实例。

新的工厂方法

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

这个工厂方法返回一个新的CompletableFuture,该CompletableFuture已经使用给定的值完成。

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

此工厂方法返回一个新的 CompletionStage,该 CompletionStage 已使用给定的值完成,并且仅支持接口 CompletionStage 中存在的方法。

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

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程