摘要: 在分析线程池的源码之前,有必要对线程池的几种状态整理一下; 1:首先看看几种状态的定义: //ctl记录了"线程池中的任务数量"和"线程池状态"2个信息 //ctl共包括32位。其中,高3位表示"线程池状态",低29位表示"线程池中的任务数量" private final AtomicInteger 阅读全文
posted @ 2019-07-19 17:40 beppezhang 阅读(640) 评论(0) 推荐(0) 编辑
摘要: 1):线程池中几个成员变量的说明。 ctl:记录了"线程池中的任务数量"和"线程池状态"2个信息,包括32位。其中,高3位表示"线程池状态",低29位表示"线程池中的任务数量"。 在 ThreadPoolExecutor 类中的定义如下: private final AtomicInteger ct 阅读全文
posted @ 2019-07-19 17:39 beppezhang 阅读(259) 评论(0) 推荐(0) 编辑
摘要: ReentrantReadWriteLock 源码分析: 1:数据结构: 成员变量: private final ReentrantReadWriteLock.ReadLock readerLock; //读取锁 private final ReentrantReadWriteLock.WriteL 阅读全文
posted @ 2019-07-19 17:38 beppezhang 阅读(319) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock 锁释放源码分析: 调用的是unlock 的方法: public void unlock() { sync.release(1); } 接下来分析release() 方法: public final boolean release(int arg) { // arg=1 i 阅读全文
posted @ 2019-07-19 17:36 beppezhang 阅读(275) 评论(0) 推荐(0) 编辑
摘要: HashMap 源码分析 基于jdk1.8分析 1:数据结构: transient Node<K,V>[] table; //这里维护了一个 Node的数组结构; 下面看看Node的数据结构,Node是它的一个内部类: static class Node<K,V> implements Map.En 阅读全文
posted @ 2019-07-19 17:25 beppezhang 阅读(310) 评论(0) 推荐(0) 编辑
摘要: CountDownLatch 源码分析: 1:CountDownLatch数据结构 成员变量 Sync类型对象 private final Sync sync; Sync是继承AQS的一个类,CountDownLatch是通过AQS和CAS来实现它的锁的功能的; 2构造方法: public Coun 阅读全文
posted @ 2019-07-19 17:20 beppezhang 阅读(577) 评论(0) 推荐(0) 编辑
摘要: CopyOnWriteArraySet 源码分析: 1:数据结构: private final CopyOnWriteArrayList<E> al; 内部维护的是一个CopyOnWriteArrayList,所以CopyOnWriteArraySet的实现原理是通过CopyOnWriteArray 阅读全文
posted @ 2019-07-19 17:19 beppezhang 阅读(650) 评论(0) 推荐(0) 编辑
摘要: CopyOnWriteArrayList 源码分析: 1:成员属性: final transient ReentrantLock lock = new ReentrantLock(); //内部是通过ReentrantLock来保证线程安全的,通过一个非公平锁 private transient v 阅读全文
posted @ 2019-07-19 17:18 beppezhang 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 1:几个重要的常量定义 private static final int MAXIMUM_CAPACITY = 1 << 30; //map 容器的最大容量 private static final int DEFAULT_CAPACITY = 16; // map容器的默认大小 private s 阅读全文
posted @ 2019-07-19 17:16 beppezhang 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 1:数据结构: transient Object[] elementData; //说明内部维护的数据结构是一个Object[] 数组 成员属性: private static final int DEFAULT_CAPACITY = 10; private static final Object[ 阅读全文
posted @ 2019-07-19 17:14 beppezhang 阅读(180) 评论(0) 推荐(0) 编辑