美文网首页
Java NIO 概述

Java NIO 概述

作者: d3f59bfc7013 | 来源:发表于2018-06-05 20:17 被阅读0次

Java NIO 主要包括一下核心组件:

  • Channels
  • Buffers
  • Selectors

Java NIO的类远不止这些,但是Channel,Buffer和Selector构成了API的核心。其他组件,如Pipe和FileLock,仅仅是与三个核心组件结合使用的实用工具类。 因此,我将在本节NIO概述中关注这三个组件。

Channels and Buffers
通常,NIO中的所有IO都以一个通道开始。 通道有点像流。 在通道中,数据可以被读入缓冲区。 数据也可以从缓冲区写入通道。 这是一个例子:

通道将数据读入缓冲区,缓冲区将数据写入通道
有几种通道和缓冲类型。以下是Java NIO中通道的实现类列表:
  • FileChannel
  • DatagramChannel
  • SocketChannel
  • ServerSocketChannel

这些通道涵盖UDP + TCP网络IO和文件IO的处理。

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

这些Buffer覆盖了可以通过IO发送的基本数据类型:byte,short,int,long,float,double和characters。Java NIO也有一个与内存映射文件结合使用的MappedByteBuffer。

Selectors
Selectors允许单个线程处理多个Channel。如果你的应用程序有许多通道代开,但是每个连接流量都很低,那么Selecttor会给你带来便利。例如:聊天服务器。

下面是一个使用Selector处理3个Channel的线程的例子:


一个线程利用Selector处理3个Channel

要使用Selector,你必须注册Channel到这个Selector。然后调用select()方法,这个方法会阻塞直到有事件(数据读取,连接建立)已经准备好。一旦该方法返回,该线程就可以处理这个事件。

上一节:Java NIO 教程
下一节:Java NIO Channel


相关文章

网友评论

      本文标题:Java NIO 概述

      本文链接:https://www.haomeiwen.com/subject/kjbmsftx.html