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 浮点型缓冲区

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的轮询,就可以接入成千上万的客户端,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值