快捷搜索:  汽车  科技

netty 学习文档:Netty中的这些知识点 你需要知道

netty 学习文档:Netty中的这些知识点 你需要知道标准的netty线程模型 中我们讲过Netty的标准线程池模型,池子里的每个线程对象就是一个NioEventLoop对象。或负责接受连接,或负责网络I/O。NioEventLoop,是一个Netty工作线程,又不仅仅是一个Netty工作线程。一个Channel 对应一个物理连接,是基于物理连接上的操作包装。EventLoop,Event意为事件、Loop意为环,EventLoo即为事件环。EventLoop是一种程序设计结构,等待以及分发事件。

一、Channel

Channel是一个接口,而且是一个很大的接口,我们称之为“大而全”,囊括了server端及client端接口所需要的接口。

Channel是一个门面,封装了包括网络I/O及相关的所有操作。

Channel聚合了包括网络读写、链路管理、网络连接信息、获取EventLoop、Pipeline等相关功能类;统一分配,调度实现相应场景的功能。

netty 学习文档:Netty中的这些知识点 你需要知道(1)

一个Channel 对应一个物理连接,是基于物理连接上的操作包装。

二、EventLoop

EventLoop,Event意为事件、Loop意为环,EventLoo即为事件环

EventLoop是一种程序设计结构等待以及分发事件。

netty 学习文档:Netty中的这些知识点 你需要知道(2)

NioEventLoop,是一个Netty工作线程,又不仅仅是一个Netty工作线程。

标准的netty线程模型 中我们讲过Netty的标准线程池模型,池子里的每个线程对象就是一个NioEventLoop对象。或负责接受连接,或负责网络I/O

说它不仅仅是一个Netty线程,因为它实现了很多功能,我们可以看下它的继承图:

netty 学习文档:Netty中的这些知识点 你需要知道(3)

它的上方有两个枝丫,一个线程属性,一个EventLoop,它是Netty的Reactor线程

既然是Reactor线程,那么首先我们需要一个多路复用器。在Netty NioEventLoop中,包就含一个 Selector,它的操作对象是Channel。

netty 学习文档:Netty中的这些知识点 你需要知道(4)

NioEventLoop的主要逻辑在它的run()方法,方法体内是一个无限循环 for (;;),循环体内实现Loop功能。这也是通用的NIO线程实现方式。

netty 学习文档:Netty中的这些知识点 你需要知道(5)

猜您喜欢: