摘要:
ReentrantReadWriteLock 源码分析: 1:数据结构: 成员变量: private final ReentrantReadWriteLock.ReadLock readerLock; //读取锁 private final ReentrantReadWriteLock.WriteL 阅读全文
摘要:
ReentrantLock 锁释放源码分析: 调用的是unlock 的方法: public void unlock() { sync.release(1); } 接下来分析release() 方法: public final boolean release(int arg) { // arg=1 i 阅读全文
摘要:
HashMap 源码分析 基于jdk1.8分析 1:数据结构: transient Node<K,V>[] table; //这里维护了一个 Node的数组结构; 下面看看Node的数据结构,Node是它的一个内部类: static class Node<K,V> implements Map.En 阅读全文
摘要:
CountDownLatch 源码分析: 1:CountDownLatch数据结构 成员变量 Sync类型对象 private final Sync sync; Sync是继承AQS的一个类,CountDownLatch是通过AQS和CAS来实现它的锁的功能的; 2构造方法: public Coun 阅读全文
摘要:
CopyOnWriteArraySet 源码分析: 1:数据结构: private final CopyOnWriteArrayList<E> al; 内部维护的是一个CopyOnWriteArrayList,所以CopyOnWriteArraySet的实现原理是通过CopyOnWriteArray 阅读全文
摘要:
CopyOnWriteArrayList 源码分析: 1:成员属性: final transient ReentrantLock lock = new ReentrantLock(); //内部是通过ReentrantLock来保证线程安全的,通过一个非公平锁 private transient v 阅读全文
摘要:
1:几个重要的常量定义 private static final int MAXIMUM_CAPACITY = 1 << 30; //map 容器的最大容量 private static final int DEFAULT_CAPACITY = 16; // map容器的默认大小 private s 阅读全文
摘要:
1:数据结构: transient Object[] elementData; //说明内部维护的数据结构是一个Object[] 数组 成员属性: private static final int DEFAULT_CAPACITY = 10; private static final Object[ 阅读全文