Netty权威指南读书笔记-(2) nio

1、nio类库介绍

nio在jdk1.4以后引入的,

1.1缓存区buffer

buffer是一个对象,包含一些要写入或者读出的数据,在nio类库中加入buffer对象,体现新库与原IO的一个重要区别,在面向流io中,可以将数据直接写入或将数据直接读到sream对象中。

缓存区实质是一个数组,通常它有一个字节数组(bytebuffer),也可以使用其他数组,但是一个缓存区不仅仅是一个数组,还提供了数据结构化访问以及维护读写位置(limit)等信息

最常见的缓存区是Bytebuffer,字节缓冲区

charbuffer 字符缓冲区

shortbuffer  短整形缓冲区 

lntbuffer  整形缓冲区

longbuffer 长整形缓冲区 

floatbuffer 浮点型缓冲区

扫描二维码关注公众号,回复: 1497597 查看本文章

doublebuffer 双精度浮点缓冲区

每个buffer类都是buffer接口的一个子实例,除了bytebuffer,每一个buffer类都有完全一样的操作,如下

capacity ,limit mark,position,clear,flip。



2、通道channel

 channel是一个通道,和自来水管一样,里面的水就是buffer,通道是双向的,可以读,可以写,也可以同时进行

channel主要分为两大类:selectableChannel(网络读写)和filechannel(文件读写)


3、多路复用器selector

   Selector会不断的轮询注册在其上的Channel,如果某个Channel上面有新的TCP连接接入、读和写事件,这个Channel就处于就绪状态,会被Selector轮询出来,然后通过SelectionKey可以获取就绪Channel的集合进行后续的IO操作。
一个多路复用器Selector可以同时轮询多个Channel,由于JDK使用了epoll()代替传统的select实现,所以它并没有最大连接句柄1024/2048的限制。这也就意味着只需要一个线程负责Selector的轮询,就可以接入成千上万的客户端,

猜你喜欢

转载自blog.csdn.net/skycanf/article/details/80305456