手把手教你调试Netty启动服务流程源码

举报
JavaEdge 发表于 2021/06/03 23:16:15 2021/06/03
【摘要】 我们自己的线程,如果写在main 方法,那就是 main 线程 在创建 NioEventLoopGroup(创建一组NioEventLoop) 的过程中就创建了 selector 这里因为我们当前线程其实是 main 线程,所以为 false 创建 ServerSocketChannel 初始化 server socket channel给 server sock...

我们自己的线程,如果写在main 方法,那就是

main 线程

  • 在创建 NioEventLoopGroup(创建一组NioEventLoop) 的过程中就创建了 selector

  • 这里因为我们当前线程其实是 main 线程,所以为 false
  • 创建 ServerSocketChannel
  • 初始化 server socket channel
  • 给 server socket channel 从 boss group 选择一个 NioEventLoop

boss thread

  • 将 serverSocketChannel 注册到选择的 NioEventLoop 的 selector

  • 绑定地址启动

  • 注册接受连接事件(OP_ACCEPT) 到selector

  • 第一次注册并非监听OP_ACCEPT,而是0

  • 最终监听的OP_ ACCEPT通过bind完成后的fireChannelActive()触发

    NioEventLoop 是通过 Register 操作的执行来完成启动。

文章来源: javaedge.blog.csdn.net,作者:JavaEdge.,版权归原作者所有,如需转载,请联系作者。

原文链接:javaedge.blog.csdn.net/article/details/111553557

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。