美文网首页
ServerBootStrap的分析

ServerBootStrap的分析

作者: 剑道_7ffc | 来源:发表于2020-04-11 11:00 被阅读0次

bossGroup与workerGroup

image.png

bossGroup 只用于服务端的 accept,也就是用于处理客户端新连接接入请求,workerGroup负责io操作

bossGroup 和 NioServerSocketChannel关联

io.netty.bootstrap.AbstractBootstrap#initAndRegister

    final ChannelFuture initAndRegister() {
            channel = channelFactory.newChannel();
            init(channel);
             ChannelFuture regFuture = config().group().register(channel);
        }

workerGroup 和 NioServerSocketChannel关联

io.netty.bootstrap.ServerBootstrap.ServerBootstrapAcceptor#channelRead
1 channelRead()方法是在哪里被调用的呢?
其实当一个 client 连接到 server 时,Java 底层 NIO 的 ServerSocketChannel 就会有一个 SelectionKey.OP_ACCEPT 的事件就绪,接着就会调用到 NioServerSocketChannel 的 doReadMessages(),然后通过ChannelPipeline调用到channelRead方法

protected int doReadMessages(List<Object> buf) throws Exception {     SocketChannel ch = javaChannel().accept();
buf.add(new   NioSocketChannel(this, ch)); 
return 1; // 省略错误处理 
}

服务端 Selector 事件轮询

SingleThreadEventExecutor.run,通过死循环来轮训

相关文章

网友评论

      本文标题:ServerBootStrap的分析

      本文链接:https://www.haomeiwen.com/subject/gegemhtx.html