首先,我们先纵览一下EventLoopGroup 的类结构图,如下图所示:

在前面的章节中我们已经简单地介绍了一下NioEventLoopGroup 初始化的基本过程,这里我们再回顾一下时序图:

基本步骤如下:

1、EventLoopGroup(其实是MultithreadEventExecutorGroup)内部维护一个类为EventExecutor children 数组,其大小是nThreads,这样就初始化了一个线程池。

2、如果我们在实例化NioEventLoopGroup 时,如果指定线程池大小,则nThreads 就是指定的值,否则是CPU核数* 2。

3、在MultithreadEventExecutorGroup 中会调用newChild()抽象方法来初始化children 数组.

4、抽象方法newChild()实际是在NioEventLoopGroup 中实现的,由它返回一个NioEventLoop 实例。

5、初始化NioEventLoop 主要属性:

provider:在NioEventLoopGroup 构造器中通过SelectorProvider 的provider()方法获取SelectorProvider。

selector:在NioEventLoop 构造器中调用selector = provider.openSelector()方法获取Selector 对象。

EventLoopGroup 的实例化相关推荐

  1. 56. Netty源代码分析-服务器初始化 NioEventLoopGroup实例化

    一. 代码下载 Netty代码下载和编译参考前一篇Netty文章 https://blog.51cto.com/483181/2112163 二. 服务器代码分析 2.1 服务器代码编写 一般Nett ...

  2. EventLoopGroup 与Reactor 关联

    我们介绍了三种Reactor 的线程模型, 那么它们和NioEventLoopGroup 又有什么关系呢? 其实, 不同的设置NioEventLoopGroup 的方式就对应了不同的Reactor 的 ...

  3. Netty学习笔记(三)EventLoopGroup开篇

    使用Netty都需要定义EventLoopGroup,也就是线程池 前面讲过在客户端只需要一个EventLoopGroup就够了,而在服务端就需要两个Group--bossGroup和workerGr ...

  4. List 为什么可以实例化ArrayList

    昨天我带的一个同事问我List 为什么可以实例化ArrayList,刚开始一下萌了(带了快 2个月了) 比如List list = new ArrayList(); List 是一个接口, 接口使用的 ...

  5. Java 实例化的理解

    理解实例化就是弄清楚类和对象的关系 可以参考我之前写的类和对象: https://huxiaomu.blog.csdn.net/article/details/89495621 类:是对象定义属性和行 ...

  6. C++ 笔记(24)— STL map 类(map实例化、插入、查找、删除)

    1. STL 映射类简介 map 和 multimap 是键-值对容器,支持根据键进行查找,区别在于,后者能够存储重复的键,而前者只能存储唯一的键. 为了实现快速查找, STL map 和 multi ...

  7. C++ 笔记(23)— STL vector 类(实例化 vector、末尾插入、指定位置插入、数组方式访问元素、指针方式访问元素、删除元素、大小与容量区别)

    1. vector 特点 vector 是一个模板类,提供了动态数组的通用功能,具有如下特点: 在数组末尾添加元素所需的时间是固定的,即在末尾插入元素的所需时间不随数组大小而异,在末尾删除元素也如此: ...

  8. Go 学习笔记(14)— 结构体定义、实例化、初始化、匿名结构体、结构体访问、结构体作为形参、结构体指针

    Go 语言中没有 "类" 的概念,也不支持 "类" 的继承等面向对象的概念.Go 语言不仅认为结构体能拥有方法,且每种自定义类型也可以拥有自己的方法. 1. 结 ...

  9. python类直接调用不实例化_未实例化类的python调用方法

    嗨,我在python3.5.2代码中有一个类:class Foo(object): __description__ = "Description of Foo" def get_d ...

最新文章

  1. C语言实现数据文件怎么找,急求如何将下列C语言程序数据存储到文件中?
  2. list::splice函数的用法与参数解释
  3. 7.6 yum更换国内源 7.7 yum下载rpm包 7.8/7.9 源码包安装
  4. Linux命令之 users -- 显示当前登录的用户
  5. 号角响起!百度AI开发者实战营第二季教你用AI实现商业梦想
  6. 湖南工程学院毕业论文计算机,bbs毕业设计
  7. Django 找不到模版报错 django.template.exceptions.TemplateDoesNotExist: index.html
  8. react typescript 父组件调用子组件
  9. paip.输入法编程--英文ati化By音标原理与中文atiEn处理流程 python 代码为例
  10. 小米蓝牙音响驱动_拆解报告:小米无线充蓝牙音箱
  11. Visual Odometry
  12. ios 裁剪框大小_ios – 如何将视频裁剪为特定大小?
  13. python虚拟变量回归_虚拟变量提升多元线性回归模型精度(附Python代码与数据)...
  14. [原] 写作及开发环境设置
  15. 397. 整数替换【我亦无他唯手熟尔】
  16. 计算机教师评语中职,中职期末评语
  17. 工具_在线生成安卓证书
  18. c#控件listview
  19. 解决 squid The basicauthenticator helpers are crashing too rapidly, need help
  20. RTX51 Tiny用户指南(一)

热门文章

  1. 怎么样才能写出出色的代码
  2. QSetting介绍
  3. Java 集合 ArrayList 需要知道的几个问题
  4. ip camera芯片级解决方案
  5. C# 实现多线程的同步方法详解
  6. nand ubi - 5 kernel和ubi
  7. 直流电机 步进电机 伺服电机
  8. 关于web.config
  9. 如何嵌入Live Messenger?
  10. R-CNN-减少region proposals的数量:NMS(非极大值抑制)