文档章节

java.nio.ByteBuffer中flip、rewind、clear方法的区别

GreenDay
 GreenDay
发布于 2014/09/13 11:31
字数 340
阅读 81
收藏 1

对缓冲区的读写操作首先要知道缓冲区的下限、上限和当前位置。下面这些变量的值对Buffer类中的某些操作有着至关重要的作用:

  1. limit:所有对Buffer读写操作都会以limit变量的值作为上限。

  2. position:代表对缓冲区进行读写时,当前游标的位置。

  3. capacity:代表缓冲区的最大容量(一般新建一个缓冲区的时候,limit的值和capacity的值默认是相等的)。

flip、rewind、clear这三个方法便是用来设置这些值的。

clear方法

public final Buffer clear()
{
    position = 0; //重置当前读写位置
    limit = capacity; 
    mark = -1;  //取消标记
    return this;
}



clear方法将缓冲区清空,一般是在重新写缓冲区时调用。

flip方法

public final Buffer flip() {
 limit = position;
 position = 0;
 mark = -1;
 return this;
}

反转缓冲区。首先将限制设置为当前位置,然后将位置设置为 0。如果已定义了标记,则丢弃该标记。 常与compact方法一起使用。通常情况下,在准备从缓冲区中读取数据时调用flip方法。

rewind方法


1public final Buffer rewind() {
2 position = 0;
3 mark = -1;
4 return this;
5}




以上三种方法均使用final修饰,java.nio.Buffer的所有子类均使用同一种flip、clear和rewind机制。


本文转载自:http://www.blogjava.net/sdjxsgb/archive/2013/06/18/400703.html

GreenDay
粉丝 7
博文 21
码字总数 4972
作品 0
闵行
程序员
私信 提问
【原创】掌握对 ByteBuffer 的操控感

作者:星巴刻 作为 Java Nio 的一个基础部分,其提供的 java.nio.ByteBuffer 不易被正确使用简直让人无语,无人愿意为它辩白。ByteBuffer 本质只是 byte 数组的封装,但是与 byte 数组相比起...

星巴刻
2017/11/23
0
0
java.nio.ByteBuffer 以及flip,clear及rewind区别

Buffer 类 定义了一个可以线性存放primitive type数据的容器接口。Buffer主要包含了与类型(byte, char…)无关的功能。 值得注意的是Buffer及其子类都不是线程安全的。 每个Buffer都有以下的...

snail-
2016/01/21
1K
0
JAVA NIO buffer (知识三)

java nio 里的buffer是缓存数据,通常缓冲区是一个数组,字节数组,也可以是别的类型。最常用的就是bytebuffer, 还有一些其它的类型: charbuffer, shortbuffer, intbuffer, longbuffer, ...

豆芽菜橙
2017/08/15
0
0
基于nio的socket编程

io编程中存在两个问题,io是阻塞的,而且保持多个连接的时候需要加入多线程来保持socket连接。这种方式比较浪费资源,因为每个连接都需要一个线程来保持,这在连接比较多的时候是一个浪费的资...

少不读水浒
2016/10/15
48
0
04. Java NIO Buffer 缓冲区

Java NIO Buffers用于和NIO Channel交互。正如你已经知道的,我们从channel中读取数据到buffers里,从buffer把数据写入到channels. buffer本质上就是一块内存区,可以用来写入数据,并在稍后...

逝去的回忆
2016/11/21
25
0

没有更多内容

加载失败,请刷新页面

加载更多

好程序员Java学习路线分享MyBatis之线程优化

  好程序员Java学习路线分享MyBatis之线程优化,我们的项目存在大量用户同时访问的情况,那么就会出现大量线程并发访问数据库,这样会带来线程同步问题,本章我们将讨论MyBatis的线程同步问...

好程序员官方
26分钟前
6
0
IDEA 自定义方法注解模板

IDEA 自定义方法注解模板 1、使用效果 /*** 计算交易费用* @Author wangjiafang* @Date 2019/9/11* @param feeComputeVo* @return*/@PostMapping("/v1/fee_compute")public ApiResp......

小白的成长
26分钟前
6
0
转:进程 线程 协程 管程 纤程 概念对比理解

引言 不知道是不是我自己本身就有那么一丝丝的密集恐惧,把这么一大堆看起来很相似很相关的概念放在一起,看起来是有点麻,捋一捋感觉舒服多了。 相关概念 任务、作业(Job,Task,Schedule)...

xiaomin0322
37分钟前
6
0
前端数组转化成字符串

val=val.join(","); 转化后:“1,2,3”

郭周园
39分钟前
4
0
Spring Boot Admin配置详解

Client端配置 参数 默认值 说明 spring.boot.admin.client.enabled true 是否启用springbootAdmin客户端 spring.boot.admin.client.url 要注册的server端的url地址。如果要同时在多个server端...

兜兜毛毛
39分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部