CompletableFuture是jdk1.8引入的实现类。扩展了Future和CompletionStage,是一个可以在任务完成阶段触发一些操作Future。
简单的来讲就是可以实现异步回调。
2.为什么引入CompletableFuture对于jdk1.5的Future,虽然提供了异步处理任务的能力,但是获取结果的方式很不优雅,还是需要通过阻塞(或者轮训)的方式。如何避免阻塞呢?其实就是注册回调。
业界结合观察者模式实现异步回调。也就是当任务执行完成后去通知观察者。比如Netty的ChannelFuture,可以通过注册监听实现异步结果的处理。
Netty的ChannelFuturepublicPromiseVaddListener(GenericFutureListener?extendsFuture?superVlistener){checkNotNull(listener,"listener");synchronized(this){addListener0(listener);}if(isDone()){notifyListeners();}returnthis;}privatebooleansetValue0(ObjectobjResult){if(RESULT_UPDATER.