juc
文章平均质量分 89
不是章鱼的章鱼哥
马达马达达内
展开
-
线程池ThreadPoolExecutor源码分析
本期带大家来分析线程池ThreadPoolExecutor的源码,在看本文之前最好要知道线程池的执行逻辑和核心参数,这样更方便从源码入手分析流程。重要的属性//高3位表示线程池运行状态,除去高3位后的低位,表示当前线程池中线程的数量private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));//表示在ctl中存放线程数量的位数private static final int COUNT_BITS = Integer原创 2021-12-07 14:13:37 · 2170 阅读 · 0 评论 -
ReentrantLock源码分析
在分析ReentrantLock前,还是需要直到AQS是什么的。AbstractQueuedSynchronizer队列同步器,简称AQS,是用来构建锁或者其他同步组件的基础框架,常用的ReentrantLock、ConuntDownLatch、Semaphore等JUC包下的组件都是基于AQS来实现的。AQS使用了一个int的成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。AQS定义了两种资源共享方式,独占和共享。本文说是分析ReentrantLock,实际上是借着它来分析AQ原创 2021-12-05 10:46:09 · 281 阅读 · 0 评论 -
ConcurrentHashMap源码分析(jdk1.8)
本文适用于了解过ConcurrentHashMap部分原理,但又没仔细研究过源码的同学!并且本文不涉及红黑树相关的操作,能力有限,掌握的不是很好。在看源码时,可以注意到Doug lea的编码风格,就是喜欢在if判断里进行一些属性的赋值,这一点一定要记清楚了,不然有些局部变量在哪赋值的都搞不清。重要属性//散列表数组最大限制private static final int MAXIMUM_CAPACITY = 1 << 30;//散列表默认大小private static final原创 2021-12-03 22:09:05 · 415 阅读 · 0 评论