您的位置:首页 > 编程语言 > Java开发

Java NIO 概述

2014-12-25 15:35 190 查看
Java NIO主要包括以下核心组件:

通道
缓冲区
选择器 

Java NIO包含比以上更多的类和组件,但是通道,缓冲区和选择器是核心的API。在我看来,其他的组件,例如Pipe和FileLock是被用来连接这些核心组件的工具类。因此,在这部分我们主要这三个组件。其他组件我们在其他的章节进行讲述。

Channels和Buffer

通常,在NIO中的所有IO操作从Channel开始。Channel有点像流。数据可以通过Channel写入缓冲区,也可以通过Channel从缓冲区读取数据.如下面的图示



Java NIO: Channels read data into Buffers, and Buffers write data into Channels

存在几个Channel和Buffer类型。下面是在Java NIO中Channel的几个主要实现
FileChannel
DatagramChannel
SocketChannel
ServerSocketChannel
如你所见,这些通道包含了TCP+UDP的网络IO,文件IO。
下面是在Java NIO中Buffer的主要实现类:
ByteBuffer
CharBuffer
DoubleBuffer
FloatBuffer
IntBuffer
LongBuffer
ShortBuffer
这些Buffer类包含了你可以通过IO发送的基本数据类型:byte short int long float double char
Java NIO还用一个MappedByteBuffer类被用来连接内存映射文件。

Selectors

一个Selector允许单个线程处理多个通道。当你的程序有多个连接打开,且每个连接的负载比较低,可以考虑使用Selector.比如,一个聊天室服务器:

下面是使用一个Selector处理三个Channel的例子:



Java NIO: A Thread uses a Selector to handle 3 Channel's

将多个通道注册到一个Selector上。然后你可以调用select()方法。这个方法会阻塞直到注册到这个Selector上的其中一个Channel准备就绪。一旦这个方法返回,我们就可以处理这些事件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nio java