目录
前言
CompletableFuture 是jdk8 新增的一个的类,它提供了强大的异步编程能力,对Future进行了扩展,能够通过回调的方式处理计算结果或者异常。
一、CompletableFuture
CompletableFuture 类实现了 Future 和 CompletionStage 接口。
public class CompletableFuture<T> implements Future<T>, CompletionStage<T>
Future 提供了异步编程的能力,但是它的缺点也很明显,在我们想要获取 Future 的结果时,需要执行 isDone( ) 判断执行状态,通过 get( ) 方法获取结果,在遇到耗时的操作时,会导致主线程的长时间阻塞。
completionStage 提供了 CompletableFuture 的流式编程,能够对前一步的结果进行进一步的函数式处理、获取结果、获取异常等。
可以指定Executor来执行CompletableFuture 任务,如果不指定的试话,默认使用ForkJoinPool线程池,里面的线程都是守护线程,如果程序主线程结束,JVM中不存在其他的用户线程,那么CompletableFuture的守护线程会直接退出,导致任务无法完成,因此最好能自定义线程池来执行CompletableFuture 任务。