版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yangguosb/article/details/86609697
Future演变史
- JDK5正式提出Future特性支持异步编程,但只能算是半异步,因为需要通过阻塞或轮询的方式获取结果;
- Netty/Guava等众多三方库对Future功能进行增强,提供注册回调函数、主动完成等功能;
- JDK8借鉴各家所长,正式推出了官方版的CompletableFuture,自此Java有了内置的异步编程模型;
CompletableFuture介绍
异步执行
//异步执行,无返回值,使用ForkJoinPool
public static CompletableFuture<Void> runAsync(Runnable runnable)
public static CompletableFuture<Void> runAsync(Runnable runnable, Executor executor)
//异步执行,有返回值,使用自定义线程池
public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier)
public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier, Executor executor)
完成异步执行
//完成异步执行,设置返回结果为value
public boolean complete(T value)
//完成异步执行,设置异常为指定异常
public boolean completeExceptionally(Throwable ex)
参考:
- Guava ListenableFuture到 JDK8 CompletableFuture对应关系:https://github.com/krka/java8-future-guide