NioBuffer Invariants

 

Java Nio Buffer 中包含了下面展示出来的一个可不变的关系

 

0  <= mark  <= position  <= limit  <= capacity  


Ni o Buffer 声明如果有导致不符合的行为发生时,那么会有相对应的异常被抛出。比如,如果调用Buffer.nextGetIndex()时,如果position>=limit,则会抛出BufferOverflowException,而调用Buffer.nextPutIndex()时,如果position>=limit,则会抛出BufferOverflowException。

 

上面关系中的mark是用来标识Buffer.reset()需要使position复位的位置。也即是说,Buffer.reset()将使得position=mark。而mark的值可以在Buffer实例化时设置,也可以用Buffer.mark()设置。Buffer.mark()使得mark=position。

 

上面四个状态可以表示为:

 

 

 

|———————————— |——————————  |

 

|———————————————————————|

 

|———| —————|

 

 

 

其中

 

——— 代表整个Buffer空间

 

——— 代表已被使用的Buffer空间

 

——— 代表未使用的Buffer空间

 

| 代表mark位置

 

| 代表position位置

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值