首页 > 编程语言 >Netty——5、源码分析

Netty——5、源码分析

时间:2023-06-30 10:34:28浏览次数:36  
标签:分析 Netty NioServerSocketChannel read selector 源码 线程 Selector serverSocketChannel

1、启动剖析

我们来看看 netty 中对下面的代码是怎样处理的。

public class Test {
    public static void main(String[] args) throws IOException {
        //1 netty 中使用 NioEventLoop (简称 nio boss 线程) 来封装线程和 selector
        Selector selector = Selector.open();
        // 2 创建 NioServerSocketChannel,同时会初始化它关联的 handler,以及为原生 ssc 存储 config
        NioServerSocketChannel attachment = new NioServerSocketChannel();

        // 3 创建 NioServerSocketChannel 时,创建了 java 原生的 ServerSocketChannel
        ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
        serverSocketChannel.configureBlocking(false);
        // 4 启动 nio boss 线程执行接下来的操作
        // 5 注册(仅关联 selector 和 NioServerSocketChannel),未关注事件
        SelectionKey selectionKey = serverSocketChannel.register(selector, 0, attachment);
        // 6 head -> 初始化器 -> ServerBootstrapAcceptor -> tail,初始化器是一次性的,只为添加 acceptor
        // 7 绑定端口
        serverSocketChannel.bind(new InetSocketAddress(8080));
    }
}

2、EventLoop

3、accept 流程

  • selector.select() 阻塞直到事件发生;
  • 遍历处理 selectedKeys;
  • 拿到一个 key,判断事件类型是否为 accept;
  • 创建 SocketChannel 注册至 Selector;
  • 关注 selectionKey 的 read 事件。

4、read 流程

  • selector.select() 阻塞直到事件发生;
  • 遍历处理 selectedKeys;
  • 拿到一个 key,判断事件类型是否为 read;
  • 读取操作。

 

标签:分析,Netty,NioServerSocketChannel,read,selector,源码,线程,Selector,serverSocketChannel
From: https://www.cnblogs.com/aoe1231/p/17512378.html

相关文章

  • 海外视频直播源码技术视频直播间的搭建
        在科技日渐发达的当今,网络将天南海北的连接到了一起,让人们之间的距离缩短,这其中就有一个技术它既把人们聚在一起,又可以让人们在其中进行社交,这个技术是什么那?听我往下面说。在一个源码平台中,有这么一个房间,他由一个人进行开始并主持,进入房间几乎没有限制,但大部分人都作......
  • 【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-WORD元数据分析2
    前言Word元数据是指文档中的元素信息,包括作者、主题、标题、关键字、文档摘要等。它们可以帮助用户更好地组织和管理文档,并且可以作为搜索引擎索引的重要信息来源。Word元数据是指存储在Word文档中的附加信息,这些信息包括作者、创建日期、最后修改日期、主题、关键字和文档摘要等......
  • R语言组lasso改进逻辑回归变量选择分析高血压、易感因素、2型糖尿病和LDL可视化
    全文链接:https://tecdat.cn/?p=33015原文出处:拓端数据部落公众号本文用逻辑回归和lasso算法医学上的疾病的相关因素,帮助客户确定哪种模型可用于某种疾病的相关因素分析。3个模型:Logistic模型、成组LassoLogistic模型、由组Lasso选出协变量的Logistic模型,有3个易感因素、高血压......
  • 【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-WORD元数据分析1
    前言Word元数据是指文档中的元素信息,包括作者、主题、标题、关键字、文档摘要等。它们可以帮助用户更好地组织和管理文档,并且可以作为搜索引擎索引的重要信息来源。Word元数据是指存储在Word文档中的附加信息,这些信息包括作者、创建日期、最后修改日期、主题、关键字和文档摘要等......
  • HashMap 的底层原理和源码分析
    tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。推荐:体系化学习Java(Java面试专题)文章目录一、HashMap的底层原理二、put方法源码分析三、get方法源码分析四、remove方法源码分析一、HashMap的底......
  • ArrayList 的底层原理和源码分析
    tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。推荐:体系化学习Java(Java面试专题)文章目录一、简介二、自动扩容机制三、add方法的源码分析四、addAll方法的源码分析五、set方法的源码分析六、remove方......
  • Android SDK安全加固问题与分析
    作者|百度APP技术平台导读在移动互联网快速发展的背景下,保护Android应用程序的安全性和知识产权变得尤为重要。为了防止恶意攻击和未授权访问,通常采用对dex文件进行代码加固来保护应用程序。随着Android加固技术经过动态加载、不落地加载、指令抽取、java2cpp、VMP等技术不断演进......
  • matlab:双或三方演化博弈,lotka-Volterra 1.双方演化博弈:代分析稳定点分析,代绘制相位图
    matlab:双或三方演化博弈,lotka-Volterra1.双方演化博弈:代分析稳定点分析,代绘制相位图,matlab仿真图代码2.三方演化博弈:代分析稳定点分析,代绘制相位图,matlab仿真图代码3.lotka-Volterra模型原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/644023709252.html原创文章,转载请说明......
  • C# ModbusRtu或者TCP协议上位机源码,包括存储,数据到SQL SERVER数据库,趋势曲线图,数据报
    C#ModbusRtu或者TCP协议上位机源码,包括存储,数据到SQLSERVER数据库,趋势曲线图,数据报表,实时和历史报警界面,有详细注释,需要哪个协议版本原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/655313350668.html......
  • 基于自抗扰控制器ADRC的永磁同步电机FOC 转速环采用ADRC,和传统PI进行对比来分析ADRC控
    基于自抗扰控制器ADRC的永磁同步电机FOC1.转速环采用ADRC,和传统PI进行对比来分析ADRC控制性能的优越性。对ADRC中的ESO进行改进,进一步提高了ADRC性能。2.提供算法对应的参考文献和仿真模型仿真模型纯手工搭建,不是从网络上复制得到。仿真模型仅供学习参考重新表述:本文研究了基......