一 点睛
Future 接口可以创建出新的线程,并在新线程中执行异步操作。但是, 如果使用 Future 接口创建了多个线程,那么这些线程各自独立执行,不存在任务依赖关系,并且无法控制各个线程的执行步骤。
为了解决这种线程间的依赖关系,从 JDK 1.8 开始,Future 接口提供了一个新的实现类 CompletableFuture。CompletableFuture 不但可以创建出异步执行的线程,还可以控制线程的执行步骤,并且可以监控所有线程的结束时刻。例如,可以使用 CompletableFuture 创建 A 和 B 两个线程,然后规定 A 和 B 线程各需要执行 3个 不同的阶段,并且当 A和 B 全部执行完毕后,再触发某个方法。
public class CompletableFuture<T> implements Future<T>, CompletionStage<T> {
public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier) {
return asyncSupplyStage(asyncPool, supplier);
}
public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier,
Executor executor) {
return asyncSupplyStage(screenExecutor(executor), supplier);
}
public