📜  CompletableFuture API改进

📅  最后修改于: 2020-11-15 03:17:26             🧑  作者: Mango


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

  • 支持延迟和超时。
  • 改进了对子类的支持。
  • 添加了新的工厂方法。

支持延迟和超时

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

如果未在给定超时之前完成,则此方法将使用给定值完成此CompletableFuture。

public CompletableFuture orTimeout(long timeout, TimeUnit unit)

如果未在给定超时之前完成,则此方法会以TimeoutException异常完成此CompletableFuture。

改进了对子类的支持

public Executor defaultExecutor()

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

public  CompletableFuture newIncompleteFuture()

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

新工厂方法

public static  CompletableFuture completedFuture(U value)

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

public static  CompletionStage completedStage(U value)

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

public static  CompletionStage failedStage(Throwable ex)

此工厂方法返回一个新的CompletionStage,该异常已经完成,并且具有给定的异常,并且仅支持接口CompletionStage中存在的那些方法。