知识卡片

ChannelInitializer的一次性初始化设计

专业/工作 · 1304.a

内容

ChannelInitializer是一次性引导Handler,覆盖[[ChannelHandler生命周期的对称结构]]中的handlerAdded和channelRegistered两回调,都尝试调initChannel搭建Pipeline,靠Map的putIfAbsent互斥保证只执行一次。挂两钩子兜底,防止覆盖handlerAdded时漏调父类逻辑,让channelRegistered能补上初始化。发散:用冗余触发点换正确性,不依赖调用方守规矩。

参考来源

《跟闪电侠学Netty:Netty即时聊天实战与底层原理》第14章《ChannelHandler的生命周期》