NIO--同步非阻塞式IO

BIO--Blocking IO--同步阻塞式IO--JDK1.4新增的IO

NIO--New IO--同步非阻塞式IO--JDK1.4新增IO

AIO-Asynchronous IO--异步非阻塞式IO--JDK1.8新增IO

下面说一下BIO的缺点:

会产生阻塞

一对一连接,客户端连接服务端都会创建一个线程,当客户端比较多的时候会创建大量的线程,比较耗费内存

客户端连接服务器之后不进行任何操作,但是线程依然存在于内存中,比较耗费内存

不能实现定点操作

NIO相比较于BIO,则完全解决了以上BIO的缺点。

NIO的组件主要有Buffer,Channel,Selector

Buffer--缓冲区,面向磁盘操作,主要进行磁盘的读写,底层实际上是基于数组进行存储的

常用API操作相关概念:

capacity--容量,用来衡量数组大小的

limit--限制位,限制操作位的尺度

position--操作位,当前操作所指向的位置

mark--标记位,位于操作位最开始的位置,通常认为标记位之前的数据是操作过的数据,且操作是准确无误的

clear--清除缓冲区,操作位归零,限制位清空,限制位移动到容量位置,

flip--反转缓冲区,相当于重新读取一遍之前的数据,限制位移动到操作位,操作位归零,标记位清空

reset--重置缓冲区,将操作位移动到标记位

rewind--重绕缓冲区,将限制位移动到容量位置,用于重复读取缓冲区中的数据

猜你喜欢

转载自www.cnblogs.com/uh-view/p/10269767.html