Feature
Feature 的思想是异步调用,当执行一个耗时很长的任务时,可以将这个耗时任务交给一个子线程去异步执行,然后通过 Feature 类获取任务的执行结果。
在 Java 中 Feature 是一个泛型接口,位于 java.util.concurrent
包下,其中定义了 5 个方法,主要包括下面这 4 个功能:
- 取消任务;
- 判断任务是否被取消;
- 判断任务是否已经执行完成;
- 获取任务执行结果。
1 | // V 代表了Future执行的任务返回值的类型 |
FeatureTask 类是 Feature 的具体实现。
CompletableFuture
Future
在实际使用过程中存在一些局限性比如不支持异步任务的编排组合、获取计算结果的 get()
方法为阻塞调用。Java 8 才被引入CompletableFuture
类可以解决Future
的这些缺陷。
CompletableFuture
除了提供了更为好用和强大的 Future
特性之外,还提供了函数式编程、异步任务编排组合(可以将多个异步任务串联起来,组成一个完整的链式调用)等能力。