前言
在前文中提到,Java 在 1.4 版本的时候提供了 NIO,实现了对 IO 的支持。在刚发布的时候,为了区别于原先的 IO 包,NIO的含义被定义New I/O
。但是这么多年过去了,新事务也早就稀松平常了,再叫New I/O
会觉得名不副实。现在大家一般都将NIO定义为NonBlocking I/O
。
NIO 相比于 BIO 而言,在概念上就复杂了许多,并且也引入了很多新的组件,需要熟悉使用这些组件才能使用 NIO 进行开发。但是掌握好这些概念后,在看 NIO 编写的程序和框架就比较容易了。
组件介绍
ByteBuffer
抽象类java.nio.Buffer
定义了一个连续的,有限的元素空间,可用于数据的读写。在 JDK 中其具体的实现类包括有8个,涵盖了除了布尔类型的 7 个基本数据类型。在这其中我们接触最多的是ByteBuffer
,其代表着一块连续的二进制数据,有点类似于数组。ByteBuffer
是唯一可以用于通道进行数据交换的类。首先来看下ByteBuffer
的类图