netty 文档建议在 ChannelHandlers 中使用实例变量来跟踪通道状态。它没有提到您应该使用 volatile 变量或使用任何其他同步技术来确保跨线程有一致的视图。
例如,在每个连接的基础上使用这个处理程序:
class Handler extends SimpleChannelUpstreamHandler {
int count = 0;
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
++count;
}
}
我希望来自 netty 线程池的许多不同线程会调用此方法,尽管不是同时调用,并且可能会看到不一致的视图,从而导致计数不准确。
是这样吗?还是在netty内部进行某种同步会导致对计数字段的写入被刷新?