**
说说NIO的实现原理
**
1、NIO是一种基于通道和缓冲区的I/O方式,以块的方式处理数据,采用多路复用的IO模型。
2、Java的NIO主要由三个核心部分组成:Channel、Buffer、Selector。
3、NIO中都从一个Channel开始,数据可以从Channel读到Buffer中,也可以从Buffer写到Channel中。
4、Buffer(数组)本质上是一块可以读写数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。
5、Selector允许单线程处理多个Channel,如果你的应用打开了多个通道(连接),但每个通道的流量都很低,使用Selector就会很方便。
IO | NIO | |
---|---|---|
处理方式 | 字节流 | 块 |
处理数据 | OutputStream/InputStream | 通道-缓冲区 |
模型 | 阻塞的IO模型 | 多路复用的IO模型 |
还有一点就是NIO的通道是可以双向的,但是IO中的流只能是单向的。