Java 9对CompletableFuture API有哪些改进?

CompletableFuture  API用于Java异步 编程 。这意味着我们可以通过在与main() 线程不同的线程上运行任务来编写非阻塞代码 ,并将其进度,完成或失败通知main()线程。Java 9在CompletableFuture  API中引入了一些改进, 它们是:“支持超时和延迟”,“对子类的改进的支持”和“添加新的工厂方法”。

支持超时和延迟

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

上面的方法已用于指定任务是否在一定时间内未完成,程序会停止并抛出TimeoutException

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

上面的方法用提供的值完成了CompletableFuture 。如果没有,它将在给定的超时之前完成。

改进了对子类的支持

public Executor defaultExecutor()

上面的方法返回用于不显示执行程序的异步方法的默认 执行程序 。在子类中可以重写它,以返回执行器以提供至少一个独立 线程

public <U> CompletableFuture<U> newIncompleteFuture()

上面的方法返回要由CompletionStage 方法返回的规范的新的不完整的 CompletableFuture 

新工厂方法

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

上面的工厂方法返回一个新的CompletableFuture ,它已经使用提供的值完成了。

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

上面的工厂方法返回一个新的CompletionStage,该新的CompletionStage用提供的值之前完成 ,并且仅与接口CompletionStage中可用的那些方法兼容。