Java NIO(New I/O)的三个属性position、limit、capacity
在缓冲区中,最重要的属性有下面三个,它们一起合作完成对缓冲区内部状态的变化跟踪:
- 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相关推荐
- 【Java Netty】Java NIO position limit capacity 以及 BufferUnderflowException
1.概述 写这个主要是遇到了这个问题,然后去研究一下,参考了几个大牛的文章. 首先遇到的错误如下 Exception in thread "main" java.nio.Buffe ...
- Java NIO理解与使用
2019独角兽企业重金招聘Python工程师标准>>> Netty的使用或许我们看着官网user guide还是很容易入门的.因为Java nio使用非常的繁琐,netty对Java ...
- Java NIO系列教程(一) Java NIO 概述
一.阻塞IO与非阻塞IO 阻塞IO: 通常在进行同步I/O操作时,如果读取数据,代码会阻塞直至有 可供读取的数据.同样,写入调用将会阻塞直至数据能够写入.传统的Server/Client模式会基于TP ...
- 理解Java NIO
摘要: 基础概念 • 缓冲区操作 缓冲区及操作是所有I/O的基础,进程执行I/O操作,归结起来就是向操作系统发出请求,让它要么把缓冲区里的数据排干(写),要么把缓冲区填满(读).如下图 • 内核空间. ...
- Java NIO 入门
在开始之前 关于本教程 新的输入/输出 (NIO) 库是在 JDK 1.4 中引入的.NIO 弥补了原来的 I/O 的不足,它在标准 Java 代码中提供了高速的.面向块的 I/O.通过定义包含数据的 ...
- 无法分配更多的internet句柄怎么回事_一文精通Java NIO(内容较多,无耐心者勿点)...
本文揭示了Java NIO底层的诸多细节与使用和理解上的陷阱,对于NIO的学习非常有帮助. 本文是笔者在学习NIO过程中发现的一些比较容易让人忽略的知识的一个总结,而这些让人忽略的小细节恰恰是NIO网 ...
- 【计算机IO系类】Java NIO
前面我们讲了操作系统的IO模型.而Java NIO并不是只包括IO模型,还包括了对模型的实现和优化.Java NIO是Java 1.4版加入的新特性,虽然Java技术日新月异,但历经10年,NIO依然 ...
- Java nio 学习笔记 相关知识
http://blog.csdn.net/tsyj810883979/article/details/6876594 一.基本概念 IO 是主存和外部设备 ( 硬盘.终端和网络等 ) 拷贝数据的过程. ...
- Java NIO、NIO.2学习笔记
http://www.cnblogs.com/littlehann/p/3720396.html 相关学习资料 http://www.molotang.com/articles/903.html ...
最新文章
- QT调用C#写的Dll
- 深究AngularJS——过滤器(filter)
- 灵图天行者9 pc版_原神PC预下载现已开启
- java foreach和for循环区别_java相关:老生常谈foreach(增强for循环)和for的区别
- 回顾经典,Netflix的推荐系统架构
- 企业库(V4.1)入门学习手记
- git依赖python_python爬虫之git的安装
- Android 快速实现微信支付(真的!很快!)
- Js和jQuery的文档就绪函数以及执行次数
- left和offsetLeft
- Jquery Dialog 详解(正在学习jquery,详解转载)
- android自动点击相应位置脚本,轻易连使用说明-自动连点器-安卓自动点击脚本 | MOS86...
- Picasso入门教程(十二)Cache Indicators,Logging Stats
- 一英寸芯片大小_Mac mini新款M1芯片详细参数配置规格 尺寸、重量等详细参数
- 智慧供热管理系统提高居民用热的智能化
- c++ 小游戏 NO 9 最后主函数
- SSM框架上传文件并不刷新页面,并预览图片
- win10 系统重装 (官方纯净版,无预置应用)
- 硬盘插上后计算机无法识别,移动硬盘插入Mac后,在Windows无法识别
- OpenCV中的SURF特征检测、匹配与对象查找