在1.4版本之前,java的IO类库是阻塞IO,从1.4版本之后引入了新的异步IO库,被称为java new IO库,简称 java NIO。而将旧的阻塞Java IO 称为OIO。

    NIO和OIO的区别:

    • OIO面向流,NIO面向缓冲区
    • OIO是阻塞的,NIO为非阻塞的
    • OIO没有选择器的概念,NIO有选择器概念

    NIO核心三组件:

    • Channel(通道):类似于OIO输入流和输出流的结合体,既可以从通道写入,也可以从通道读取
    • Buffer (缓冲区):通道的读取是从通道读取到缓冲区,通道的写入是从缓冲区写入到通道
    • Selector(选择器):把通道注册到选择器,然后通过选择器的内部机制,可以查询这些注册的通道是否有已经就绪的IO事件