Java NIO 之 ByteBuffer

抽象类ByteBuffer 

  • ByteBuffer的继承关系

  • 父类

wKioL1nPYkbgSwxhAAAhdmcBu9I780.png

  • 子类

目前,大概有5个实现类

wKiom1nPYomwGl3gAACNp7Jz_s8471.png


  • ByteBuffer 底层,主要依赖?

    顾名思义,从ByteBuffer的名称来看,这个缓冲区针对的是字节类型的缓冲区,

    从源码中,也可以查询到, 就是字节数组


wKioL1nPYkbS8sRPAAB-FwMVdRg803.png


  • ByteBuffer的主要api

我这里仅仅分享一下,getput,因为这两个方法用到的最多了。

  • put 操作

wKioL1nPYkax25puAACbmIGoUvc735.png


目前有5个实现类,我们可以依次查看,到底如何实现的

DirectByteBuffer.java


wKiom1nPYonCizBoAADdQpsJhd4107.png


DirectByteBufferR.java

wKioL1nPYkbQuHleAABnPuhe2ME161.png


HeapByteBuffer.java

wKiom1nPYoqBYa_-AAEgyJzSbRc276.png


HeapByteBufferR.java

wKioL1nPYkexNru8AAB3F6CytHI595.png


  • get操作

    get操作,目前有两种实现思路,如下所示

    HeapByteBuffer.java

wKiom1nPYorR5IAVAACJTUKe1w4294.png


DirectByteBuffer.java

wKiom1nPYoqxUQ0xAAB0-jsj2nY112.png


  • 总结:

    其实,当我看到这些的时候,很开心,印证了自己的猜想,突然意识到,JavaNIOBuffer,也是对数组的封装;那么按照类似的思路,我们也可以慢慢的制定属于我们自己的框架。感觉有些事件一下子相同了。心里有底气了。

    很明显提供了一些思路,当我们在开发自己的框架时,如果有场景需要缓存的话,也可以这样做。

 

 

其他Buffer的实现类,也类似,目前就不在一一看了。

//不知道为什么JDK里的Buffer源码里,会有很多空白行,感觉格式排版有问题吧


















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章