FrameDecoder 使用一个 ChannelBuffer 实例(字段累加)来汇总所有 Channel 的原始数据,然后传递给解码。有可能 channel A 的整帧(应用级帧)的部分数据写入累加,然后 channel B 的整帧数据的部分写入累加。据我了解,累积应该使用 ChannelLocal 来存储不同 Channel 的不同实例,以避免这种情况。这种情况确实存在还是我对代码理解错误?
最佳答案
您应该为每个新连接( channel )使用扩展 FrameDecoder 的类的新实例。对于所有未使用 @Sharable [1] 注释进行标记的 ChannelHandler 都是如此。
[1] http://netty.io/docs/stable/api/org/jboss/netty/channel/ChannelHandler.Sharable.html
关于java - FrameDecoder在非单连接情况下不安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9254800/