码迷,mamicode.com
首页 > 编程语言 > 详细

【JAVA】【NIO】2、Java NIO Overview

时间:2015-03-14 20:07:31      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:java   nio   翻译   

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()方法,这个方法会阻塞,直到有一个通道在你注册的事件上就绪了。一旦方法返回了,线程就可以处理事件了。事件可以是建立连接,接受数据等等。

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

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

【JAVA】【NIO】2、Java NIO Overview

标签:java   nio   翻译   

原文地址:http://blog.csdn.net/simonchi/article/details/44262257

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!