2019-04-29 NIO

Buffer 缓冲区

方法

  • allocate() : 获取缓冲区(Boolean除外)
  • put() : 存入数据到缓冲区
  • get() : 获取缓冲区的数据
  • flip() : 读数据模式
  • rewind() : 可重复读
  • clear() : 清空缓冲区,但是缓冲区中数据依然存在,处于“被遗忘”状态
  • reset() : 将position恢复到mark的位置
  • remaining() : position 到 limit 剩余的数据长度
  • hasRemaining() : 判断是否还有可操作的数据
  • isDirect() : 判断是否为直接缓冲区

四大核心属性:

  • capacity : 容量,表示缓冲区中最大存储数据的容量。一旦声明不能修改。
  • limit : 界限,表示缓冲区中可以操作数据的大小。(limit后数据不能进行读写)
  • position : 位置,表示缓冲区中正在操作数据的位置。
  • mark : 可以记录当前position的位置,通过reset()恢复到mark的位置
  • 0 <= mark <= position <= limit <= capacity

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

  • 非直接缓冲区: 通过allocate()方法分配缓冲区, 将缓冲区建立在JVM的内存中
  • 直接缓冲区:通过allocateDirect()方法分配直接缓冲区,将缓冲区建立在物理内存中。可以 提高效率

Channel通道

  • 通道主要实现类
    java.nio.channels.Channel接口: FileChannel、 SocketChannel、ServerSocketChannel、DatagramChannel
    1.Java针对支持通道的类提供了getChannel()方法
    2.JDK7 中的NIO.2针对各个通道提供了静态方法open()
    3.JDK7 中的NIO.2的Files 工具类的newByteChannel()

你可能感兴趣的:(2019-04-29 NIO)