三、netty概览

所有文章

https://www.cnblogs.com/lay2017/p/12922074.html

 

正文

为了了解netty的工作机制,这里有几个概念需要知道

1.BootStrap

2.EventLoopGroup

3.EventLoop

4.SocketChannel

5.ChanneInitializer

6.ChannelPipeline

7.ChannelHandler

这些概念关联关系如图

三、netty概览

 

 下面分别描述

BootStrap

bootstrap主要关注怎么启动netty,比如启动线程、打开连接等

EventLoopGroup

顾名思义,是EventLoop的一个组的概念。之所以把EventLoop变成组,就是为了共享资源,比如线程资源。

EventLoop

eventLoop其实就是循环监听事件,比如SocketChannel的数据到达事件。监听到的事件会交给对应的ChannelHandler处理

SocketChannel

socketChannel表示的是两台电脑的TCP连接,它被eventLoop管理,并且一直都是同一个eventLoop。eventLoop也会启用同一个线程去管理socketChannel,因此你也不用担心并发问题。

ChannelInitializer

ChannelInitializer是一个特殊的ChannelHandler,当一个SocketChannel被创建的时候,ChannelInitializer会被关联到ChannelPipeline上。所以,ChannelInitializer也可以说是初始化了SocketChannel。当SocketChannel初始化完毕,ChannelInitializer就会移除。

ChannelPipeline

每一个SocketChannel都绑定有一个ChannelPipeline,ChannelPipeline包含一系列ChannelHandler。当EventLoop从SocketChannel读取到数据,就会传输给ChannelHandler,一个ChannelHandler处理完就会传递给下一个。向SocketChannel写入数据也是一样的通过ChannelPipeline处理。

ChannelHandler

ChannelHandler处理来自SocketChannel的数据,ChannelHandler也可以处理要写入SocketChannel的数据。

 

上一篇:NIO Selector(选择器)


下一篇:小师妹学JavaIO之:用Selector来发好人卡