欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

nio 缓冲区的容量、位置和限制。

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

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

  • 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单元。

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