码迷,mamicode.com
首页 > Web开发 > 详细

Netty 源码(五)NioEventLoop

时间:2018-12-02 19:18:51      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:一点   事件驱动   重要   env   sch   img   使用   线程池   dex   

Netty 源码(五)NioEventLoop

Netty 基于事件驱动模型,使用不同的事件来通知我们状态的改变或者操作状态的改变。它定义了在整个连接的生命周期里当有事件发生的时候处理的核心抽象。

Channel 为 Netty 网络操作抽象类,EventLoop 主要是为 Channel 处理 I/O 操作,两者配合参与 I/O 操作。

下图是 Channel、EventLoop、Thread、EventLoopGroup 之间的关系。

技术分享图片

  • 一个 EventLoopGroup 包含一个或多个 EventLoop。
  • 一个 EventLoop 在它的生命周期内只能与一个 Thread 绑定。
  • 所有有 EnventLoop 处理的 I/O 事件都将在它专有的 Thread 上被处理。
  • 一个 Channel 在它的生命周期内只能注册与一个 EventLoop。
  • 一个EventLoop 可被分配至一个或多个 Channel 。

当一个连接到达时,Netty 就会注册一个 Channel,然后从 EventLoopGroup 中分配一个 EventLoop 绑定到这个 Channel 上,在该 Channel 的整个生命周期中都是有这个绑定的 EventLoop 来服务的。

一、NioEventLoop 类图

技术分享图片

其中 Executor、ExecutorService、AbstractExecutorService、ScheduledExecutorService 属于 JDK 定义的规范,Netty 实现了自己的自定义线程池。


每天用心记录一点点。内容也许不重要,但习惯很重要!

Netty 源码(五)NioEventLoop

标签:一点   事件驱动   重要   env   sch   img   使用   线程池   dex   

原文地址:https://www.cnblogs.com/binarylei/p/10054508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!