Netty02. NIO 的核心组件 Buffer、Selector、Channel。

Buffer:数组

缓冲区是一个容器对象,咱们使用缓冲区处理数据的时候,全部的数据都是用缓冲区进行处理的,在读取数据的时候,将数据读取到缓存区中,写入数据的时候也是将数据写入到缓冲区中;
任什么时候候访问NIO的数据,都是放到缓冲区的;
实际上,缓冲区是一个容器对象,是一个数组,全部的缓存类型都继承了Buffer,对与咱们经常使用的基本数据类型,都有对应的Buffer类型;

TIM图片20200221205856.png

Buffer的底层是一个数组,可是咱们在使用的使用的时候会有三个属性来记录和跟踪缓冲区的变化状况,咱们使用get()和put()方法来对数组进行获取和添加数据的时候都会对缓冲区引发状态的变化

(1)position:指定写入和读取元素的索引,get()/put()方法更新值,初始化时为0
(2)limit:缓存区写入通道有多少的数据,或者还有多少的空间能够放入数据
(3)capacity:缓冲区的最大容量,数组的容量大小;缓存

Selector
(1)向Selector对象注册喜欢的事件
(2)在Selector中获取喜欢的事件
(3)根据不一样的事件处理相对应的方法spa

事件
(isAcceptable,isReadable,isWritable)

Channelcode

通道是一个对象,经过他来读取和写入数据,全部的数据经过Buffer来进行处理。
咱们不会直接从通道中读取数据,而是将数据写入到缓存区中,再从缓冲区中获取数据的

NIO中的通道对象不少,都实现了Channel接口对象

TIM图片20200221211639.png

相关文章
相关标签/搜索