1. 函数式接口
1.1 Supplier
- 无参有返回值的接口。
1.2 Consumer
- 有参无返回值得接口。
1.3 Function<T,R>
- Function接口是根据一个类型的数据得到另一个类型的数据,前者称为前置条件,后者称为后置条件。
1.4 Predicate
- 有参且返回值为Boolean的接口。
1.5 方法引用
- 在Lambda表达式中要执行的代码和我们另一个方法中的代码是一样的,这时就没有必要重写一份逻辑了,这时我们就可以“引用”重复代码。
2.CompletableFuture 是什么?
CompletableFuture 是 Java 8 中引入的一个实现异步编程类
2.1 API
- supplyAsync
- 有返回参数的异步任务
- 默认执行的forkjon 线程池中 也可以执行在自定义线程池
- runAsync
- 无返回参数的异步任务
- 默认执行的forkjon 线程池中 也可以执行在自定义线程池
- get
- 它会阻塞当前线程,直到任务完成并返回结果
- get 带超时时间
- 未完成任务,抛TimeoutException
- join
- join() 方法是 CompletableFuture 类提供的一种获取任务结果的方式,它会阻塞当前线程,直到任务完成并返回结果。
- CompletableFuture 提供了一系列方法来处理任务的完成事件,实现异步回调.
- thenApply 输入参数;
- T是上一阶段的任务结果类型;
- 返回值 U 是新阶段的任务结果类型;
- fn方法对上一阶段的任务结果进行转换操作,并返回一个新的 CompletableFuture 对象。
- thenAccept
- 输入参数 T是上一阶段的任务结果类型
-action方法对上一阶段的任务结果进行消费,并返回一个新的 CompletableFuture对象
- 输入参数 T是上一阶段的任务结果类型
- thenRun
- CompletableFuture
thenRun(Runnable action)相当于开启一个新的任务
- CompletableFuture
- thenCombine
- thenCombine()方法将两个任务的结果进行组合,对他们的结果进行处理并返回新的 CompletableFuture 对象。
- thenCompose
- thenCompose方法拿到当前任务的结果之后,再对其结果进行异步操作