老师 这段代码很难理解, 为啥p.addlast是加handler, 但是他的参数是个内部类

来源:3-3 服务端Channel的初始化

慕妹0138986

2019-11-06

老师 这段代码很难理解, 为啥p.addlast是加handler, 但是他的参数是个内部类

内部类里边还是有pipeline.addlast 这个内部类啥时候调用 晕了

 p.addLast(new ChannelInitializer<Channel>() {
        @Override
        public void initChannel(final Channel ch) {
            final ChannelPipeline pipeline = ch.pipeline();
            // channel 是在哪保存起来的  是在我们server设置haandler的时候 放在了abstractbootstrap 那里
            ChannelHandler handler = config.handler();
            if (handler != null) {
                pipeline.addLast(handler);
            }

            ch.eventLoop().execute(new Runnable() {
                @Override
                public void run() {
                    pipeline.addLast(new ServerBootstrapAcceptor(
                            ch, currentChildGroup, currentChildHandler, currentChildOptions, currentChildAttrs));
                }
            });
        }
    });
写回答

1回答

闪电侠

2019-11-07

ChannelInitializer 是一个特殊的 handler,可以理解为 channel 在初始化的时候,ChannelInitializer 的 initChannel 方法会被调用

0
0

Java读源码之Netty深入剖析

解析netty各大组件细节,百万级性能调优,设计模式实际运用

2334 学习 · 283 问题

查看课程