Java NIO 概述

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

热门文章

优秀文章