翻译

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

这里提前附上一段代码,各位读者,先看下,后面会慢慢讲解,代码中也会有详细的注释
这里写图片描述

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

下一节:【JAVA】【NIO】3、Java NIO Channel

文章最后发布于: 2015-03-14 19:04:46
展开阅读全文
0 个人打赏
私信求帮助

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 酷酷鲨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览