completableFuture 是JDK1.8版本新引入的类。下面是这个类:

实现了俩接口,本身是个class。这个是Future的实现类,使用 completionStage 接口去支持完成时触发的函数和操作。
一个 completetableFuture 就代表了一个任务,他能用Future的方法,还能做一些之前说的 executorService 配合 futures 做不了的。
之前future需要等待isDone为true才能知道任务跑完了,或者就是用get方法调用的时候会出现阻塞,而使用 completableFuture 的使用就可以用then,when等等操作来防止以上的阻塞和轮询isDone的现象出现。
1.创建CompletableFuture直接new对象。
一个 completableFuture 对象代表着一个任务,这个对象能跟这个任务产生联系。
下面用的 complete 方法意思就是这个任务完成了需要返回的结果,然后用 get() 方法可以获取到。

2.JDK1.8使用的接口类。
在本文的 CompletableFuture 中大量地使用了这些函数式接口。
注:这些声明大量应用于方法的入参中,像 thenApply 和 thenAccept 这俩就是一个用Function一个用Consumer
而lambda函数正好是可以作为这些接口的实现。例如 s->{return 1;} 这个就相当于一个Function。因为有入参和返回结果。

(1)Function

(2)Consumer

对于前面有Bi的就是这样的,BiConsumer就是两个参数的。

(3)Predicate这个接口声明是一个入参,返回一个boolean。

(4)supplier


本文深入探讨了Java 8中的CompletableFuture类,揭示其作为异步利器的关键特性。通过分析源码,阐述了如何通过new对象、使用接口和静态方法实现异步操作。CompletableFuture的then、whenComplete、allOf和anyOf等方法的使用,以及守护线程的影响,展示了其在避免阻塞和提高效率上的优势。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



