NIO三大核心API
管道 Channel
NIO的通道类似于流,但有些区别如下:
-
通道可以同时进行读写,而流只能读或者只能写
-
通道可以实现异步读写数据
-
通道可以从缓冲读数据,也可以写数据到缓冲
缓存 Buffer
Buffer是一个可以写入或者读取数据的内存块
buffer中有几个重要的标志:
1.capacity 标志着缓存的大小
2.position 当前读/写的位置 最大为capacity-1
3.limit 信息的末尾位置
重要的方法:
flip():写模式切换到读模式 position=0,limit=position
clear():清空缓存 postion=0,limit=capacity
Selector
一个组件,可以检测多个NIO channel,看看读或者写事件是否就绪。
多个Channel以事件的方式可以注册到同一个Selector,从而达到用一个线程处理多个请求成为可能。