前言
Netty 的大部分用户接口都是异步化的,返回的都是一个 ChannelFuture
对象。该接口是 Netty 对 JDK 中的 Future
接口扩展而来。和开发者相关比较大的变化是允许添加一个 GenericFutureListener
监听器,以便在异步任务完成时触发回调任务。
接口的定义比较简单,不过如何保证并发的安全性则是一个值得思考的问题。假定在任务完成的瞬间,addListener
方法被调用,回调方法是否一定被触发?下面带着问题来看源码
类层次
首先让我们来看下类层次图。
虽然大部分用户接口代码返回都是 ChannelFuture,但是实际上真正生效的是接口 ChannelPromise
。从 Promise
接口继承的能力,使得该接口允许设置成功或者失败标识。下面在源码走读中具体来分析。
源码走读
Future
Netty 自定义的 Future
接口,继承自 JDK 的 Future
接口,不过实际当中使用到的都是自己定义的方法。方法大致上分为两类&#x