netty之基础概念

1、缓冲区Buffer

Buffer是一个存储读入或写出的对象。在面向流的IO中,可以将数据写入Stream或读取Stream对象的数据。而NIO是面向Buffer,面向缓冲区的,数据的写入或读取操作都是在缓冲区中进行的。

Buffer的实质就是一个数组,但是比数组功能更强大,通常是一个ByteBuffer,也可以使用其他类型的数组。每一种基本类型都有对应的一种缓冲区(除了Boolean),比如CharBuffer、IntBuffer等等。

2、通道Channel

Channel是一个通道,就像自来水水管一样,数据通过Channel读取和写入。IO是通过流传输数据的,流只是在一个方向能够传输,比如InputStream只能输入、OutputStream只能输出。而NIO的Channel可在读写两个方向同时进行。很形象的一个例子,流传输就像两个人用对讲机对话,同一时间只能一个人讲话,而通道传输就像用手机对话,两个人同时都能说话。因为Channel是全双工的,也是为了更好的支持底层操作系统的API,操作系统的通道全是全双工的。

Channel可以分为两大类:用于网络读写的SelectableChannel和用于文件操作的FileChannel。

3、多路复用器Selector

多路复用器提供选择已经就绪的任务的能力。就是说,Selectort会不断轮询注册在其上的Channel,如果有某个Channel上面发生读或者写事件,这个Channel就处于就绪状态,会被Selector轮询出来,然后通过SelectionKey可以获取就绪Channel的集合,进行后续的IO操作。

一个多路复用器Selector可以同时轮询多个Channel。也就是说,一个线程负责Selector的轮询,就可以同时接入成千上万的客户端。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值