0%

NIO

文章字数:222,阅读全文大约需要1分钟

NIO

  1. 同步,非阻塞IO
    NIO之所以是同步,是因为它的accept/read/write方法的内核I/O操作都会阻塞当前线程。
    但又说是非阻塞,即读取到信息的处理并不在主线程上进行,所以也是非阻塞的。
  2. 组成部分
  • Channel通道:一个可以读和写的对象,相比于只能单向的流对象,速度更快。通过IO通道可以实现异步处理。

  • Buffer`缓存:该对象本质就是一块可以写入然后读取的数据的内存块。
    使用流程

    1
    2
    3
    4
    1. 写入到缓冲区
    2. 调用buffer.flip()切换成读模式
    3. 读取数据
    4. 调用buffer.clear()或buffer.compat()方法清除缓冲区,以备下次使用。

    缓存有三个重要属性

    1
    2
    3
    1. Capacith :内存大小
    2. Position :待写入位置或者当前读取位置
    3.