javaJAVA NIO

Buffer

2018-11-28  本文已影响0人  spraysss

什么是Buffer

java.nio.Buffer 抽象类指的是用于存储特定原始类型数据的容器,Buffer除了它存放的数据之外还有四个基本属性:positionlimitcapacitymark 这几个值都是int类型 ,它们之间满足如下数学关系:

0 <= mark <= position <= limit<= capacity
这四个特征的含义如下:

标记和重置

通过reset可以将position设置为mark的值

Clear, flipp, and rewind

除了boolean类型,每个基本数据类型都有其对应的Buffer类

直接缓冲区与非直接缓冲区

缓冲区分为是直接缓冲区和非直接缓冲区。如果是直接字节缓冲区,Java虚拟机将尽力直接在其上执行本地I/O操作,避免使用中间临时缓存区进行多次拷贝
直接缓存区分配和回收的开销更大
建议将直接缓冲区主要分配给大型、长时间运行IO程序

线程安全

Buffer不是线程安全的

如何创建Buffer

ByteBuffer为例子,如下所示是创建ByteBuffer的几种方式:

buffer 视图

ByteBuffer buffer = ByteBuffer.allocate(10);
ByteBuffer bufferView = buffer.duplicate();
ByteBuffer’s asxBuffer()

Buffer 读写

put/get 带有index的为绝对操作,不带index的为相对操作

Byte Ordering

上一篇下一篇

猜你喜欢

热点阅读