java新IO---缓冲区与Buffer

来源:互联网 发布:网上订餐软件 编辑:程序博客网 时间:2024/06/04 19:00

一,本章目标

了解缓冲区的作用

了解缓冲区的操作原理



二,具体内容

在JDK1.4之后,为了提升io性能,提供了一个新的开发包,NIO,定义在java.nio.*中


在整个java中,已有的IO操作大部分属于阻塞操作:键盘输入数据,必须一致等待用户输入数据,否则程序无法进行,还有Socket程序中所有的服务器必须通过accept方法一致等待用户连接,那么这样一来肯定会造成大量的系统资源浪费,所以在JDK1.4之后增加了NIO,在整个新IO的操作中基本上都是使用缓冲区来完成的。


既然使用了缓冲区,那么性能是最高的。


以上的操作基本上都是针对基本数据类型的操作,但是没有boolean类型。

但是在使用缓冲区的时候,有几个变量是非常有用处的:position,limit,capacity

以IntBuffer为例子:






还可以在一个缓冲区中创建一子缓冲区




子缓冲区是可以修改数据的,如果不希望缓冲区数据被修改,可以创建只读缓冲区


只读缓冲区是不能修改数据的,也就是说不能用put方法。

在缓冲区中还有一种称为直接缓冲区,如果创建了直接缓冲区,则JVM将尽最大努力对其执行本机的IO操作。


以上的代码知识提高一些尽可能的性能。直接缓冲区性能是最高的。



三,总结

新IO都是以缓冲区进行操作的。

缓冲区针对各个基本数据类型都有实现,除了Bollean

缓冲区中存在positioon,limit,capacity三个状态变量

缓冲区的操作中通过allocate创建缓冲区,或者使用只读,直接缓冲区。





原创粉丝点击