在缓冲区中,最重要的属性有下面三个,它们一起合作完成对缓冲区内部状态的变化跟踪:

  • capacity
  • position
  • limit

  position和limit的含义取决于Buffer处在读模式还是写模式。不管Buffer处在什么模式,capacity的含义总是一样的。

  这里有一个关于capacity,position和limit在读写模式中的说明,详细的解释在插图后面。

capacity

  作为一个内存块,Buffer有一个固定的大小值,也叫“capacity”.你只能往里写capacity个byte、long,char等类型。一旦Buffer满了,需要将其清空(通过读数据或者清除数据)才能继续写数据往里写数据。

position

  当你写数据到Buffer中时,position表示当前的位置。初始的position值为0.当一个byte、long等数据写到Buffer后, position会向前移动到下一个可插入数据的Buffer单元。position最大可为capacity – 1.

  当读取数据时,也是从某个特定位置读。  当从Buffer的position处读取数据时,position向前移动到下一个可读的位置。

limit

  在写模式下,Buffer的limit表示你最多能往Buffer里写多少数据。 写模式下,limit等于Buffer的capacity。

  当切换Buffer到读模式时, limit表示你最多能读到多少数据。因此,当切换Buffer到读模式时,limit会被设置成写模式下的position值。换句话说,你能读到之前写入的所有数据(limit被设置成已写数据的数量,这个值在写模式下就是position)

转载于:https://www.cnblogs.com/JAYIT/p/8352341.html

Java NIO(New I/O)的三个属性position、limit、capacity相关推荐

  1. 【Java Netty】Java NIO position limit capacity 以及 BufferUnderflowException

    1.概述 写这个主要是遇到了这个问题,然后去研究一下,参考了几个大牛的文章. 首先遇到的错误如下 Exception in thread "main" java.nio.Buffe ...

  2. Java NIO理解与使用

    2019独角兽企业重金招聘Python工程师标准>>> Netty的使用或许我们看着官网user guide还是很容易入门的.因为Java nio使用非常的繁琐,netty对Java ...

  3. Java NIO系列教程(一) Java NIO 概述

    一.阻塞IO与非阻塞IO 阻塞IO: 通常在进行同步I/O操作时,如果读取数据,代码会阻塞直至有 可供读取的数据.同样,写入调用将会阻塞直至数据能够写入.传统的Server/Client模式会基于TP ...

  4. 理解Java NIO

    摘要: 基础概念 • 缓冲区操作 缓冲区及操作是所有I/O的基础,进程执行I/O操作,归结起来就是向操作系统发出请求,让它要么把缓冲区里的数据排干(写),要么把缓冲区填满(读).如下图 • 内核空间. ...

  5. Java NIO 入门

    在开始之前 关于本教程 新的输入/输出 (NIO) 库是在 JDK 1.4 中引入的.NIO 弥补了原来的 I/O 的不足,它在标准 Java 代码中提供了高速的.面向块的 I/O.通过定义包含数据的 ...

  6. 无法分配更多的internet句柄怎么回事_一文精通Java NIO(内容较多,无耐心者勿点)...

    本文揭示了Java NIO底层的诸多细节与使用和理解上的陷阱,对于NIO的学习非常有帮助. 本文是笔者在学习NIO过程中发现的一些比较容易让人忽略的知识的一个总结,而这些让人忽略的小细节恰恰是NIO网 ...

  7. 【计算机IO系类】Java NIO

    前面我们讲了操作系统的IO模型.而Java NIO并不是只包括IO模型,还包括了对模型的实现和优化.Java NIO是Java 1.4版加入的新特性,虽然Java技术日新月异,但历经10年,NIO依然 ...

  8. Java nio 学习笔记 相关知识

    http://blog.csdn.net/tsyj810883979/article/details/6876594 一.基本概念 IO 是主存和外部设备 ( 硬盘.终端和网络等 ) 拷贝数据的过程. ...

  9. Java NIO、NIO.2学习笔记

    http://www.cnblogs.com/littlehann/p/3720396.html 相关学习资料   http://www.molotang.com/articles/903.html ...

最新文章

  1. QT调用C#写的Dll
  2. 深究AngularJS——过滤器(filter)
  3. 灵图天行者9 pc版_原神PC预下载现已开启
  4. java foreach和for循环区别_java相关:老生常谈foreach(增强for循环)和for的区别
  5. 回顾经典,Netflix的推荐系统架构
  6. 企业库(V4.1)入门学习手记
  7. git依赖python_python爬虫之git的安装
  8. Android 快速实现微信支付(真的!很快!)
  9. Js和jQuery的文档就绪函数以及执行次数
  10. left和offsetLeft
  11. Jquery Dialog 详解(正在学习jquery,详解转载)
  12. android自动点击相应位置脚本,轻易连使用说明-自动连点器-安卓自动点击脚本 | MOS86...
  13. Picasso入门教程(十二)Cache Indicators,Logging Stats
  14. 一英寸芯片大小_Mac mini新款M1芯片详细参数配置规格 尺寸、重量等详细参数
  15. 智慧供热管理系统提高居民用热的智能化
  16. c++ 小游戏 NO 9 最后主函数
  17. SSM框架上传文件并不刷新页面,并预览图片
  18. win10 系统重装 (官方纯净版,无预置应用)
  19. 硬盘插上后计算机无法识别,移动硬盘插入Mac后,在Windows无法识别
  20. OpenCV中的SURF特征检测、匹配与对象查找

热门文章

  1. 2022-2028年小型风电产业投资及前景预测报告
  2. bert as service
  3. Dockerfile构建实践
  4. 图像复原的神经网络稀疏表示
  5. ISP算法高水平分析(上)
  6. CVPR2020论文解析:视频语义检索
  7. [JS][编程题]括号匹配
  8. Android Studio 3.5 之后导入第三方Library 库的方法
  9. Error:This Gradle plugin requires Studio 3.0 minimum
  10. 【USACO06JAN POJ3179】Corral the Cows