Netty 4中替代Netty 3 DefualtChannelFuture类的实现是什么?
Netty 4 中 DefaultChannelFuture 的替代实现类
注:问题描述中的DefualtChannelFuture为拼写笔误,实际对应Netty 3中的DefaultChannelFuture类。
Netty 4 对异步结果处理的类结构做了读写拆分重构,和Netty 3中DefaultChannelFuture具备完全同等功能的替代实现类是:io.netty.channel.DefaultChannelPromise
功能匹配说明
- 能力完全对齐:
DefaultChannelPromise同时实现了ChannelFuture(提供Channel关联、异步结果查询、监听器注册能力)和ChannelPromise(提供手动设置操作成功、失败、取消状态的写入能力),100%覆盖原DefaultChannelFuture的核心用途;同样支持初始化时指定实例是否可取消,和原类的可选配置完全兼容。 - 初始化逻辑一致:构造时需要传入绑定的
Channel实例,可选择传入cancelable参数控制是否支持取消操作,和Netty 3中DefaultChannelFuture的参数传入逻辑保持对齐。
等效代码对比
// Netty 3 原生写法 ChannelFuture oldFuture = new DefaultChannelFuture(channel, true); oldFuture.setSuccess(); // Netty 4 替代写法 ChannelPromise newPromise = new DefaultChannelPromise(channel, true); newPromise.setSuccess();
注意事项
- 不要误用通用
DefaultPromise类,这类实现没有内置Channel上下文,无法匹配原类和Channel强绑定的特性。 - 对外暴露只读异步结果时,可直接将
DefaultChannelPromise实例向上转型为ChannelFuture返回,完全符合Netty 4的接口设计规范。
内容的提问来源于stack exchange,提问作者Finlay Weber
相关产品推荐
相关产品推荐

