package com.roc.nio;
import java.nio.IntBuffer;
import java.security.SecureRandom;
/**
* 测试只读buffer
* 如何得到一个只读buffer?
* 创建只读buffer的目的是为了阻止其他地方对于这个buffer底层数据的改变,
* 只是将只读buffer传给调用者,并不赋予调用者改变的权限,
* 并且只读buffer是不能转回可读写buffer的
* @author lenovo
*
*/
public class ReadonlyBuffer {
public static void main(String[] args) {
// TODO Auto-generated method stub
IntBuffer intBuffer = IntBuffer.allocate(10);
for(int i = 0;i<intBuffer.capacity();i++) {
//此方法为相对方法(relative),他会导致position的变化
intBuffer.put(new SecureRandom().nextInt(20));
//此方法是绝对方法(absolute),他的使用只会讲对应位置的值替换到,并不会更改position
//intBuffer.put(i,new SecureRandom().nextInt(20));
}
/**
* 调用Buffer的七个派生类的asReadOnlyBuffer方法获得一个只读buffer,
* 他们共享一份底层数据array,但是拥有独立的posittion,limit,capacity
*/
IntBuffer intBufferR = intBuffer.asReadOnlyBuffer();
//其实只读buffer对于写入buffer的操作都只是单纯抛出一个异常,并没有进行任何处理
intBufferR.put(0, 6);
}
}
对于Nio中只读Buffer的简介
最新推荐文章于 2021-03-06 14:45:47 发布