码迷,mamicode.com
首页 > 其他好文 > 详细

nio buffer的capacity,position和limit

时间:2015-09-22 19:15:22      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

nio Buffer的capacity,position,limit的3个属性说明:

  1. capacityBuffer的内存固定的一个大小值,一般创建Buffer时初始化写入-->ByteBuffer.allocate(capacity)需注意写入数据时需考虑数据大小是否超过Buffer的大小,如果超过需对Buffer进行扩容。

  2. positionlimit都分读和写2种情况:

  3. position读和写情况的分析:
    1)写数据到Buffer中时,position表示写入数据的当前位置。position的初始值为0.当一个byte、long等数据写到Buffer后, position会向下移动到下一个可插入数据的Buffer单元position最大可为capacity – 1(因为position的初始值为0.
    2)读数据到Buffer中时,position表示读入数据的当前位置,如position=2时表示已开始读入了3个byte,或从第3个byte开始读取。通过ByteBuffer.flip()切换到读模式时position会被重置为0,当Buffer从position读入数据后,position会下移到下一个可读入的数据Buffer单元。

  4. limit读和写情况的分析:
    1)写数据时,limit表示可对Buffer最多写入多少个数据。
    2)读数据时,limit表示Buffer里有多少可读数据(not null的数据),因此能读到之前写入的所有数据(limit被设置成已写数据的数量,这个值在写模式下就是position



nio buffer的capacity,position和limit

标签:

原文地址:http://my.oschina.net/haoqoo/blog/509731

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!