1 Bits 类:用于处理原始数据和字节数据之间的转化,我们平常开发中不涉及过于底层的开发暂时涉及不到。
源码备注翻译:https://blog.csdn.net/guoguo_guojiang/article/details/89237720
1 BufferedInputStream 继承自FilterInputStream,缓冲区构造大小8M
![](https://img.haomeiwen.com/i13589981/4cb9ef4391bd9dda.png)
2 BufferedInputStream 设计思想。为什么要设计这个类,这个类的主要功能就是其提供了内存缓冲的功能,BufferedInputStream 以某个输入流为参数,BufferedInputStream 会把这个输入流的数据分批次读入,每次都把数据读入到固定大小的缓冲区中,操作完这个缓冲区之后再把流内的数据读入。这里我认为有三个比较明显的优点。1 缓冲数据是在内存中操作的,而流的数据一般是硬盘上的,通过缓冲区的操作,减少了流数据的从磁盘上读取的次数,提升了效率。2 对比与流数据,缓冲区内我们能够对数据进行重新排序等操作,BufferedInputStream 类中也提供了这也操作的api 如fill() 函数等。 3 流式读取速度慢,但是一直占用cpu,而基于缓冲的字节流会等到缓冲区内数据到达一定大小时候才会一次进行处理,减少了cpu的消耗。
3 api
![](https://img.haomeiwen.com/i13589981/b8bb2bda18b3ac38.png)
4 并发控制
read、mark、reset和skip、availabe方法上,用的是重锁实现这些操作的原子性,这里可能是可以继续优化的一个点。
此外字段buf加以volatile关键字配以AtomicReferenceFileUpdater引用字段原子更新器来保证buf扩容赋值的原子性。
![](https://img.haomeiwen.com/i13589981/f8bc2fe59c5fed57.png)
![](https://img.haomeiwen.com/i13589981/7de3d7c6f6f863a7.png)
![](https://img.haomeiwen.com/i13589981/860ca6e3ab199bbf.png)
![](https://img.haomeiwen.com/i13589981/e2f3e4afb11095a5.png)
网友评论