先简单回顾一下EventLoop 实例化的运行时序图:

从上图可以看到, SingleThreadEventExecutor 有一个名为thread 的Thread 类型字段, 这个字段就是与SingleThreadEventExecutor 关联的本地线程。我们看看thread 在哪里被赋值的:

private void doStartThread() {assert thread == null;executor.execute(new Runnable() {@Overridepublic void run() {thread = Thread.currentThread();boolean success = false;updateLastExecutionTime();try {SingleThreadEventExecutor.this.run();success = true;} catch (Throwable t) {logger.warn("Unexpected exception from an event executor: ", t);} finally {// 此处省略清理代码}}});
}

之前的章节我们分析过,SingleThreadEventExecutor 启动时会调用doStartThread()方法,然后调用executor.execute()方法,将当前线程赋值给thread。在这个线程中所做的事情主要就是调用SingleThreadEventExecutor.this.run()方法,而因为NioEventLoop 实现了这个方法,因此根据多态性,其实调用的是NioEventLoop.run()方法。

NioEventLoop 的实例化过程相关推荐

  1. Angular单元测试ComponentFixture的实例化过程明细

    从angular core里导入单元测试需要的库文件: import { async, ComponentFixture, TestBed } from '@angular/core/testing' ...

  2. java构造方法和实例化,10. JavaSE-子类实例化过程 构造方法间调用

    子类的实例化过程: 子类中所有的构造函数默认都会访问父类中空参数的构造函数. class Parent { Parent(){ System.out.println("parent clas ...

  3. python类实例化_python基础8之类的实例化过程剖析

    一.概述 之前我们说关于python中的类,都一脸懵逼,都想说,类这么牛逼到底是什么,什么才是类?下面我们就来讲讲,什么是类?它具有哪些特性. 二.类的语法 2.1 语法 class dog(obje ...

  4. java基础代码实例_基础篇:详解JAVA对象实例化过程

    1 对象的实例化过程 对象的实例化过程是分成两部分:类的加载初始化,对象的初始化 要创建类的对象实例需要先加载并初始化该类,main方法所在的类需要先加载和初始化 类初始化就是执行方法,对象实例化是执 ...

  5. Java类初始化及实例化过程

    类的初始化过程 1).具体操作 ①静态成员变量的显式赋值代码 ②执行静态代码块 2).实质 编译器将这两部分代码在.class字节码文件中合为一个名<clinit>()的初始化方法 3). ...

  6. java中子类实例化过程中的内存分配

    知识点: 子类继承父类之后,实例化子类时,内存中子类是如何分配内存的呢? 下面,自己会结合一个例子,解释一下,一个子类实例化过程中,内存是如何分配的 参考博客:http://www.cnblogs.c ...

  7. python 实例化过程_python实例化对象的具体方法

    python中同样使用关键字class创建一个类,类名称第一个字母大写,可以带括号也可以不带括号:python中实例化类不需要使用关键字new(也没有这个关键字),类的实例化类似函数调用方式: # c ...

  8. 【Spring】Bean的实例化过程

    创建Bean的入口:org.springframework.beans.factory.support.DefaultListableBeanFactory#preInstantiateSinglet ...

  9. 深入理解Java虚拟机之Java类加载机制,Java类实例化过程详解。

    目录 Java类加载机制 类加载过程 加载(Loading) 连接(Linking) 初始化(Initialzation) 使用(Useing) 卸载(Unloading) 引言 什么情况下开始类加载 ...

最新文章

  1. 摘录理解LDAP与LDAP注入
  2. CGAL window 10安装、Demo使用步骤以及问题解决记录
  3. Linux ss命令 报错,ECS Linux中ss命令显示连接状态的使用说明
  4. 小米手机卡顿如何解决
  5. 小菜编程成长记(一 面试受挫——代码无错就是好?)
  6. Centos-7修改yum源为国内的yum源
  7. day6 字典的介绍
  8. Unity 实现人物移动
  9. 蓝牙加密方案,蓝牙方案,蓝牙usbkey,蓝牙key,蓝牙U盾,蓝牙智能卡(公交卡等CPU卡),蓝牙身份认证产品分享,蓝牙公交卡,蓝牙会员卡
  10. 服务器运行cad慢,CAD绘图唯快不破(CAD运行用加速技巧)
  11. UG二次开发GRIP过滤
  12. 华为OJ——将真分数分解为埃及分数
  13. 2019.4.3个人赛
  14. 阿里云云服务器ECS
  15. Android解压apk包
  16. 《缠中说禅108课》84:本 ID 理论一些必须注意的问题
  17. Windows安装pyserial
  18. 消息中间件RocketMQ
  19. 如何让快速在CAD图纸中标注文字
  20. 常见的机器学习数据挖掘知识点之Basis

热门文章

  1. SmartGit破解方法
  2. python后端从数据库请求数据给到前端的具体实现
  3. 1704班3组—高级软件测试作业—如何计算团队成员贡献分
  4. BZOJ 1016 最小生成树计数 【模板】最小生成树计数
  5. [ios开发基础之]代码块
  6. 学javascript 必须了解 typeof 和 instanceof
  7. android日常开发60条经验
  8. servlet监听完成统计在线人数,显示在线人员列表(附源码)
  9. MySQL主从复制原理应用基础
  10. 更改centos 7 的默认启动为命令界面