nio之Buffer

Buffer是一个缓冲(容器),里面可以写数据,读数据等操作,数据都是同一种类型。
重要属性有

  • capacity: Buffer容量
  • limit: 第一个不能读或者写的元素的下标。(position到limit之间为可操作元素)
  • position:下一个读或者写位置的下标
  • mark: mark的位置为reset时position设置的位置

Buffer的操作就是玩这几个下标

重要操作
clear: limit <- capacity, position <- 0
flip: limit <- position, position <- 0
rewind: position <- 0 , limit不变

线程安全性:
Buffer不是线程安全,需要人工添加同步功能。

api

//Returns the number of elements between the current position and the limit.
int 	remaining()

//Flips this buffer.
Buffer 	flip()

ByteBuffer

/*
将position至limit之间的元素顺序左移至buffer开头开始
*/
public abstract ByteBuffer compact()

CharBuffer

//创建一个CharBuffer, 里面有个char数组作为元素容器
public static CharBuffer allocate(int capacity)

//包装一个数组生成一个charbuffer
public static CharBuffer wrap(char[] array,int offset, int length)

复制

duplicate
Duplicate()函数创建了一个与原始缓冲区相似的新缓冲区。两个缓冲区共享数据元素,拥有同样的容量,但每个缓冲区拥有各自的位置,上界和标记属性。对一个缓冲区内的数据元素所做的改变会反映在另外一个缓冲区上。

slice
slice()创建一个从原始缓冲区的当前位置开始的新缓冲区,并且其容量是原始缓冲区的剩余元素数量(limit-position)。这个新缓冲区与原始缓冲区共享一段数据元素子序列

直接缓冲区(堆外)

public abstract class ByteBuffer extends Buffer implements Comparable {  
	public static ByteBuffer allocate (int capacity);
	public static ByteBuffer allocateDirect (int capacity);
	public abstract boolean isDirect( ); 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值