Java NIO组件

在Java中,NIO读写是I/O的基本过程。 从通道读取:创建一个缓冲区,然后请求通道读取数据。通道写入:创建一个缓冲区,填充数据,并要求通道写入数据。

读写操作中使用的核心部件有:

  • Channels
  • Buffers
  • Selectors

Java NIO还有其它更多的组件和类,但是ChannelBufferSelector用作API的核心。

通道和缓冲区

在标准I/O API中,使用字符流和字节流。 在NIO中使用通道和缓冲区。 NIO中的所有I/O都是通过一个通道开始的。数据总是从缓冲区写入通道,并从通道读取到缓冲区。

数据读取操作:

下面来看看将数据从通道读入缓冲区,如下图所示:

数据写入操作:

下面来看看从缓冲区将数据写入通道,如下图所示:

通道列表

在Java NIO中,主要使用的通道如下:

  • DatagramChannel
  • SocketChannel
  • FileChannel
  • ServerSocketChannel

上述通道涵盖UDP(用户数据报协议)+ TCP(传输控制协议)网络I/O和文件I/O。

缓冲列表

在Java NIO中使用的核心缓冲区如下:

  • CharBuffer
  • DoubleBuffer
  • IntBuffer
  • LongBuffer
  • ByteBuffer
  • ShortBuffer
  • FloatBuffer

上述缓冲区覆盖了通过I/O发送的基本数据类型:charactersdoubleintlongbyteshortfloat

选择器

Java NIO提供了“选择器”的概念。这是一个可以用于监视多个通道的对象,如数据到达,连接打开等。因此,单线程可以监视多个通道中的数据。

如果应用程序有多个通道(连接)打开,但每个连接的流量都很低,则可考虑使用它。 例如:在聊天服务器中。

下面来看看线程使用选择器来处理3个通道,如下图所示:


上一篇: 下一篇: Java NIO包