美文网首页
2. Netty-NioEventLoopGroup

2. Netty-NioEventLoopGroup

作者: JacobChan001 | 来源:发表于2020-08-05 09:56 被阅读0次

    NioEventLoopGroup 的结构图

    NioEventLoopGroup.png
    • NioEventLoopGroup 是 NioEventLoop 的集合,其持有一个装着 NioEventLoop 的数组
    • 每个 NioEventLoop 里面有一个 selector 和一个 taskQueue
      • selector: 负责监听事件
      • taskQueue: 用来保存异步任务
      • exector: 单线程线程池,用来异步执行 NioEventLoop的 run() 方法
    • NioEventLoop 在初始化之后会从 executor 里启动一个线程执行自身的 run() 方法,该方法执行逻辑
      • selector.select(): 返回监听事件
      • processSelectedKeys(): 处理 selector 返回的事件
      • runAllTasks(): 处理异步队列的任务

    BossGroup

    • 监听 Accept 事件
    • 当 accept 事件返回后,调用 ServerSocketChannle.pipeline() 中注册的 ChannelHandler,在 pipeline 中有一个处理接受请求的 ChannelHandler , 即 ServerBootstrapAcceptor,执行该 ChannelHandler 的 channelRead() 方法将事件携带的 socketChannel 封装成 NioSocketChannel,并注册到 workerGroup 中的 NioEventLoop 下的 Selector 中

    WorkerGroup

    • 监听 Connect/Read 事件
    • 当 connect / read 事件返回后,调用 SocketChannel.pipeline() 中注册的 ChannelHandler,这些 ChannelHandler 既是 ServerBootstrap.childHandler() 注册的 ChannelHandler

    相关文章

      网友评论

          本文标题:2. Netty-NioEventLoopGroup

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