JAVA高级基础(44)---NIO简介及缓冲区介绍

版权声明:如需转载请标明出处 https://blog.csdn.net/yj201711/article/details/84939965

NIO

Java NIO(New IO)是从Java1.4版本开始引入的一个新的IO  API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。

  1. NIO支持面向缓冲区的、基于通道的IO操作。
  2. NIO将以更加高效的方式进行文件的读写操作。
  3. NIO采取通道(Channel)和缓冲区(Buffer)来传输和保存数据,它是非阻塞式的I/O,即在等待连接、读写数据(这些都是在一线程以客户端的程序这种会阻塞线程的操作)的时候,程序也可以做其他事情,以实现线程的异步操作。

传统IO和NIO的区别

IO:基于流                                阻塞式IO
NIO:面向缓冲区,基于通道     非阻塞式IO

NIO示意图


    通道:用来传输数据的
    缓冲区:用来保存数据的

缓冲区(Buffer)

一个用于特定基本数据类型的容器。由  java.nio 包定义的,所有缓冲区都是Buffer抽象类的子类

Java NIO中的Buffer主要用于与NIO通道进行交互,数据是从通道读入缓冲区,从缓冲区写入通道中的

Buffer就像一个数组,可以保存多个相同类型的数据,根据数据类型不同(boolean除外),有以下Buffer常用子类:

  • ByteBuffer
  • CharBuffer
  • DoubleBuffer
  • FloatBuffer
  • IntBuffer
  • LongBuffer
  • ShortBuffer

基本属性

    缓冲区的基本属性还包括:容量(capacity)、限制(limit)、位置(pos)、标记(mark)和重置(reset):

  1. 缓冲区的容量:是它所包含的元素的数量。缓冲区的容量不能为负并且不能更改。
  2. 缓冲区的限制:是第一个不应该读取或写入的元素的索引。缓冲区的限制不能为负,并且不能大于其容量。
  3. 缓冲区的位置:是下一个要读取或写入的元素的索引。缓冲区的位置不能为负,并且不能大于其限制。
  4. 缓冲区的标记与重置:标记是一个索引,通过Buffer中的 mark() 方法指定Buffer中一个特定的position,之后可以通过调用 reset() 方法恢复到这个position。

猜你喜欢

转载自blog.csdn.net/yj201711/article/details/84939965