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
3.下面是这个类的静态方法
带有Async就是异步执行的意思、也是一个 completableFuture