对于Nio中只读Buffer的简介

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);
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值