【JAVA】【NIO】2、Java NIO Overview

Java NIO主要有以下核心组件构成:

  1. 通道
  2. 缓存
  3. 选择器
    Java NIO其实有比上面更多的类和组件,但是在我看来,Channel,Buffer,Selector是核心的API。其它组件,像管道和文件锁,仅仅只是在与三大核心组件结合使用时的通用工具类。

通道和缓存

一般来说,NIO中的所有IO都是从通道开始的。通道就像一个流,数据可以从通道中读到一个缓存里去,同样,数据可以从缓存写进通道里
技术分享
上面代表读操作,下面代表写操作

在Java NIO中,主要有如下几种通道:
·FileChannel
·DatagramChannel
·SocketChannel
·ServerSocketChannel
这些通道覆盖了网络中的TCP,UDP的IO和文件IO。

在Java NIO中,核心的缓存如下:
·ByteBuffer
·CharBuffer
·DoubleBuffer
·FloatBuffer
·IntBuffer
·LongBuffer
·ShortBuffer
这些缓存包括了通过IO发送数据的基本数据类型。
Java NIO还有一个MappedByteBuffer是用于内存文件映射的。

选择器

一个选择器允许单个线程处理多个通道的数据。如果你的应用打开了很多连接(channel),这就非常方便了,但是每个连接(channel)的流量会小一点。比如聊天服务器。
技术分享
单个线程通过选择器处理三个通道

首先把通道注册到选择器上,然后你调用select()方法,这个方法会阻塞,直到有一个通道在你注册的事件上就绪了。一旦方法返回了,线程就可以处理事件了。事件可以是建立连接,接受数据等等。

这里提前附上一段代码,各位读者,先看下,后面会慢慢讲解,代码中也会有详细的注释
技术分享

这段代码就描述了选择器,注册等相关机制。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。