1: 缓冲区:buffer
public abstract class Buffer {
// Invariants: mark <= position <= limit <= capacity
private int mark = -1; // 标记
private int position = 0; // 位置 位置会自动由相应的get( )和put( )函数更新
private int limit; //上界
private int capacity; // 缓冲区能够容纳的数据元素的最大数量。这一容量在缓冲区创建时被//设定,并且永远不能被改变。
.......
}
Flip()函数将一个能够继续添加数据元素的填充状态的缓冲区翻转成一个准备读出元素
public final Buffer flip() {
limit = position;
position = 0;
mark = -1;
return this;
}
ps下: iteye的编辑器 不能直接复制图片 ....真蛋疼..
比如现在的 缓冲区: 1 2 3 4 5 6 7 8 9
mark标记在1位置 buffer.put()已经放了6个字节 那么position到了6的位置:
limit在9的位置...
Flip()函数将一个能够继续添加数据元素的填充状态的缓冲区翻转成一个准备读出元素的释放状态
flip后: positon=0 limit =6 就可以读出 刚才放进缓冲区的字节数.