源码分析
文章平均质量分 79
Forever_and_ever
这个作者很懒,什么都没留下…
展开
-
ReentrantReadWriteLock源码分析
ReentrantReadWriteLock是基于AQS实现的读写锁,读锁与读锁不互斥、读锁与写锁互斥、写锁与写锁互斥。AQS提供了共享和排它两种模式,acquire/release、acquireShared/releaseShared 是AQS里面的两对模板方法。写锁是基于acquire/release模板方法实现的,读锁是基于acquireShared/releaseShared这对模板方法实现的。WriteLockacquire public final void acqu...原创 2024-05-08 23:54:59 · 283 阅读 · 0 评论 -
GenericServlet中的设计模式
public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable { private transient ServletConfig config; 略。。。 public void init(ServletConfig config) throws ServletException { this.config = config; .原创 2022-01-24 18:19:01 · 238 阅读 · 0 评论 -
ArrayList源码分析
ArrayList 类结构如下ArrayList继承AbstractList,实现了list,RandomAccess,Cloneable,Serializable,支持随机访问、克隆和序列化。RandomAccess是一个标记接口,表示支持随机访问,ArrayList底层是用数组实现了,数组可以通过index随机访问元素。Jdk中Collections类有binarySearch方法,查询List集合中某个元素的索引值。如果集合实现了RandomAccess接口,就支持采用二分查找,否则使..原创 2021-05-24 17:59:13 · 171 阅读 · 0 评论 -
HashMap 源码分析
final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab; Node<K,V> p; int n, i; if ((tab = table) == null || (n = tab.length) == 0) //table数组为空,需要调用r...原创 2021-05-24 15:15:04 · 277 阅读 · 6 评论 -
ReentrantLock源码分析
ReentrantLock是Concurrent包提供的一种可重入锁。可重入锁是指当一个线程获取锁进入互斥区后可以再次拿到该锁,而不需要释放之前获取的锁。通常锁都需要设计成可重入的,否则很容易发生死锁。ReentrantLock 是基于AQS来实现的,AQS也叫抽象同步队列器,是Concurrent包提供的一种实现同步队列的框架。AQS类结构如下:AbstractOwnableSynchronizer 是一个抽象类,只有一个成员变量exclusiveOwnerThread,表示持有锁的对象.原创 2021-05-07 15:48:51 · 111 阅读 · 1 评论 -
java.io.BufferedInputStream 源码分析
BufferedInputStream 是带有缓存区的输入字节流,使用byte[ ] 数组来进行缓存。当需要从外界读入数据到内存中时,先一次性读取多个字节的数据存放到byte[ ] 数组当中。之后对数据的存取都是操作byte[ ] 数组这个缓存区,从而提高了性能。BufferedInputStream类结构如下所示:在java的io模块中经常看到装饰器模式的身影,FilterInputStream 利用装饰器模式将InputStream 封装成类的成员变量class FilterInpu.原创 2021-04-02 10:11:07 · 281 阅读 · 0 评论