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源码里,会有很多空白行,感觉格式排版有问题吧












本文转自故新51CTO博客,原文链接:http://blog.51cto.com/xingej/1970040 ,如需转载请自行联系原作者







相关文章
|
1月前
|
存储 Java 数据处理
|
1月前
|
Java API
java中IO与NIO有什么不同
java中IO与NIO有什么不同
|
5天前
|
监控 Java 开发者
深入理解 Java 网络编程和 NIO
【4月更文挑战第19天】Java网络编程基于Socket,但NIO(非阻塞I/O)提升了效率和性能。NIO特点是非阻塞模式、选择器机制和缓冲区,适合高并发场景。使用NIO涉及通道、选择器和事件处理,优点是高并发、资源利用率和可扩展性,但复杂度、错误处理和性能调优是挑战。开发者应根据需求选择是否使用NIO,并深入理解其原理。
|
2月前
|
移动开发 编解码 网络协议
用Java的BIO和NIO、Netty来实现HTTP服务器(三) 用Netty实现
用Java的BIO和NIO、Netty来实现HTTP服务器(三) 用Netty实现
|
2月前
|
网络协议 Java Linux
用Java来实现BIO和NIO模型的HTTP服务器(二) NIO的实现
用Java来实现BIO和NIO模型的HTTP服务器(二) NIO的实现
|
2月前
|
编解码 网络协议 Java
用Java的BIO和NIO、Netty实现HTTP服务器(一) BIO与绪论
用Java的BIO和NIO、Netty实现HTTP服务器(一) BIO与绪论
|
3月前
|
Java 应用服务中间件 Linux
java中的NIO,BIO,AIO
java中的NIO,BIO,AIO
17 0
|
1天前
|
安全 Java 调度
Java线程:深入理解与实战应用
Java线程:深入理解与实战应用
9 0
|
1天前
|
Java
Java中的并发编程:理解和应用线程池
【4月更文挑战第23天】在现代的Java应用程序中,性能和资源的有效利用已经成为了一个重要的考量因素。并发编程是提高应用程序性能的关键手段之一,而线程池则是实现高效并发的重要工具。本文将深入探讨Java中的线程池,包括其基本原理、优势、以及如何在实际开发中有效地使用线程池。我们将通过实例和代码片段,帮助读者理解线程池的概念,并学习如何在Java应用中合理地使用线程池。
|
5天前
|
安全 Java
深入理解 Java 多线程和并发工具类
【4月更文挑战第19天】本文探讨了Java多线程和并发工具类在实现高性能应用程序中的关键作用。通过继承`Thread`或实现`Runnable`创建线程,利用`Executors`管理线程池,以及使用`Semaphore`、`CountDownLatch`和`CyclicBarrier`进行线程同步。保证线程安全、实现线程协作和性能调优(如设置线程池大小、避免不必要同步)是重要环节。理解并恰当运用这些工具能提升程序效率和可靠性。

热门文章

最新文章