Java NIO 分散/聚集
来源:互联网 发布:数据库工程师发展怎样 编辑:程序博客网 时间:2024/04/29 06:22
Java NIO内部提供了对scatter/gather的支持。Scatter/Gather是用来向channel写数据或从channel读数据的一种方式。
从一个通道分散(scattering)读是一个向一个或多个缓冲区读入数据的读操作。因此,将一个通道里的数据分散读入多个缓冲区。
向一个通道聚集(gather)写入是一个从一个或多个缓冲区向单个通道写入数据的写操作。因此,将一个或多个缓冲区的数据聚集(gather)写入一个通道。
当你需要将数据分开处理的时候Scatter/Gather将会派上用场。例如,一个消息包含头部和主体,你可能想将头部和主体放在不同的缓冲区中,使用Scatter/Gather将会使这样的工作变得容易。
Scattering Reads
一个"scattering read"将单个通道的数据读入到多个缓冲区。
下面是一个使用Scattering read的示例
ByteBuffer header = ByteBuffer.allocate(128);ByteBuffer body = ByteBuffer.allocate(1024);ByteBuffer[] bufferArray = { header, body };channel.read(buffers);这些缓冲区首先被封装成一个数组,然后作为参数传入channel.read()方法。channel.read()方法将通道中数据顺序写入到数组中存储的缓冲区,但第一个缓冲区写满时,通道会继续移动到第二个缓冲区进行填充。
当第一个缓冲区填满时,才会移动到第二个缓冲区进行填充,造成了scattering read无法用来处理动态大小的消息部分。换句话说,如果你有一个头部和一个主题,然后头部有固定的大小,scattering read才能很好的工作。
Gathering Writes
"gathering write"将多个缓冲区的数据写入单个通道。
下面是一个使用gathering write的示例:
ByteBuffer header = ByteBuffer.allocate(128);ByteBuffer body = ByteBuffer.allocate(1024);//write data into buffersByteBuffer[] bufferArray = { header, body };channel.write(buffers);
缓冲区数组被传入给channel.write()方法,缓冲区的数据会按照在数组中的顺序写入到通道。只有缓冲区中position和limit之间的数据会被写到缓冲区。因此,如果一个缓冲区的容量大小为128字节,但只包含58个字节的数据,只有这58个字节从缓冲区写入通道。所以,gathering write可以用来处理动态大小的消息部分,这也是gathering write区别于scattering read的地方。
0 0
- Java NIO 分散/聚集
- Java Nio 五、分散/聚集
- Java NIO 之分散与聚集
- NIO-分散/聚集的应用
- Java NIO (三)-分散(Scatter)/聚集(Gather)
- NIO分散读取与聚集写入
- JAVA NIO总结(三)—分散聚集、文件锁定、字符集
- Java NIO分散读取与聚集写入/编码与解码 示例
- Java-NIO(六):Channel聚集(gather)写入与分散(scatter)读取
- 四、Nio之Scatter(分散)/Gather(聚集)
- 分散聚集IO
- 分散和聚集
- 分散/聚集I/O
- "分散-聚集DMA"以及"scatterlist"
- 分散读取以及聚集写入
- NIO缓冲区(3)之分散(Scatter)/聚集(Gather)、通道之间的数据传输和选择器(Selector)
- 分散/聚集 I/O(scatter-gather I/O)
- 聚集搜索引擎java实现
- 二叉树的深度优先遍历、广度优先遍历和非递归遍历
- VC访问西门子S7-200的串口协议分析(实测通过)
- CoopyIII开发文档之LED篇
- Linux常用命令
- jquery easyui datagrid中NumberBox限制小数位数后不能输入小数点的解决办法
- Java NIO 分散/聚集
- mac终端命令大全介绍
- aaaaaaaaaaaaaaaaaaaaaaaa
- 页面div太大,导致显示不完全怎么解决?
- CDC中的SelectObject
- Codeforces Round #263 (Div. 1) B. Appleman and Tree
- spring 日志工具
- mysql的存储引擎分析
- WEB开发常用的图片格式