NIO介绍
NIO即no-blocking IO,表示同步非阻塞IO操作。采用多路复用器,事件驱动机制,当发生io请求时,触发相应的事件,多路复用器中的轮询器即selector轮询到事件,从而交由线程执行。请求发起方发起请求之后并不会被堵塞,可以设置为非堵塞的状态。
三大核心组件
java nio框架中,有三大核心的组件:Buffer、Channel、Selector。其关系图为:
Buffer
buffer即数据缓冲区,用于存储发送或读取Channel中的数据。数据流向是双向的,读写模式的切换需要依赖filp()方法。Buffer中重要的的几个属性。
- position: 表示当前读取或写入的索引位置。
- limit:表示当前读取或写入的限制索引位置。(position <= limit)
- capacity: 表示缓冲区的容量。
buffer中操作数据的方法有:get()
读取position位置的数据,put()
将数据写入position索引位置。array()
直接返回buff