1.概述

Java的NIO是指JDK1.4版本开始,提供全新的IO处理方式的类集合,这些类被放在Java.nio包下,NIO是Non-Blocking—IO的简称,也就是非阻塞IO。相对于java.io包下传统IO类的清一色同步阻塞的特点,NIO支持采用非阻塞IO的方式处理问题,并且内部还细分为同步非阻塞(NIO)、异步非阻塞(AIO)。

还有些文章将NIO理解为New IO的简称,相比于Java.io包下的传统IO,NIO除了对原有功能进行改进外,还提供了很多更高级的功能,因此这么说是合理的。

2.核心类

2.1 Buffer(缓冲区)

NIO之所以称为面向缓冲的IO方式,是因为开发者无法直接操作Channel对象,Buffer的子类都提供了很多读写相关的方法,程序中对Channel涉及的读写操作,都是通过调用Buffer的API间接操作。而Buffer的本质就是申请一块既可以读也可以写的内存空间,用于Java进程和IO设备发生读写时,与内核之间的数据双向拷贝。

更直接的说,就是单个Buffer对象既可以读数据,也可以写数据。这也是NIO与传统IO的一个明显的区别,传统IO读和写必须创建俩个不同的Stream,而NIO只需要创建一个Channel搭配Buffer即可:

图片

评论