nio包中主要通过下面两个方面来提高I/O操作效率:

 

* 通过Buffer和Channel来提高I/O操作的速度。

 

* 通过Selector来支持非阻塞I/O操作。

 

Channel and Buffer

Channel 和 buffer 是 NIO 是两个最基本的数据类型抽象。

Buffer:

  是一块连续的内存块。

  是 NIO 数据读或写的中转地。

Channel:

  数据的源头或者数据的目的地

  用于向 buffer 提供数据或者读取 buffer 数据 ,buffer 对象的唯一接口。

  异步 I/O 支持

  

  示例代码:

  

 

Buffer 内部结构

  

  

  

 

Charset

  向 ByteBuffer 中存放数据时需要考虑字符集的编码(char-->byte)方式,读取展示 ByteBuffer 数据时涉及对字符集解码(byte-->char)。

  Java.nio.charset 提供了编码解码一套解决方案。

  以我们最常见的 http 请求为例,在请求的时候必须对请求进行正确的编码。在得到响应时必须对响应进行正确的解码。

   

 

posted on 2013-10-10 11:07  拼代码的考拉  阅读(150)  评论(0编辑  收藏  举报