Java NIO 概述
精华
小牛编辑
295浏览
2023-03-14
Java NIO由以下核心组件组成:
- 通道(Channel)
- 缓冲区(Buffer)
- 选择器(Selector)
Java NIO拥有比这些更多的类和组件,但在我看来Channel,Buffer 和Selector构成了API的核心。其余组件,例如 Pipe和FileLock仅仅是与三个核心组件结合使用的实用程序类。因此,在本NIO概述中,我将重点介绍这三个组件。其他组件在本教程的其他地方以其自己的文本进行了说明。
通道和缓冲区
通常,NIO中的所有IO都以Channel开头。Channel有点像流。从Channel数据可以读入Buffer。数据也可以从一个写Buffer成Channel。这是一个说明:
Java NIO:通道将数据读取到缓冲区中,而缓冲区将数据写入通道中 |
有几种Channel和Buffer类型。以下是Java NIO中Channel的主要实现类:
- FileChannel
- DatagramChannel
- SocketChannel
- ServerSocketChannel
如您所见,这些通道涵盖UDP + TCP网络IO和文件IO。
这些类也有一些有趣的接口,但是为了简单起见,我将它们排除在Java NIO概述之外。在本教程的其他内容中将对它们进行解释。
以下是Java NIO中Buffer的核心实现类:
- ByteBuffer
- CharBuffer
- DoubleBuffer
- FloatBuffer
- IntBuffer
- LongBuffer
- ShortBuffer
这些Buffer涵盖了您可以通过IO发送的基本数据类型: byte,short,int,long,float,double 和字符.。
Java NIO可以使用MappedByteBuffer与内存映射文件结合使用。
选择器
选择器(Selector)允许单个线程处理多个Channel。如果您的应用程序打开了许多连接(通道),但是每个连接的流量很少,这将很方便。例如,在聊天服务器中。
以下是使用Selector处理Channel:
Java NIO:使用Selector来处理Channel |