JDK源码解析
文章平均质量分 90
JDK常用源码解析
爱看雲的雲
这个作者很懒,什么都没留下…
展开
-
ConcurrentHashMap源码解析(二): 构造函数、重点方法
目录构造函数put方法1、put()-方法入口2、putVal()-添加节点2.1、initTable()-初始化数组2.2、helpTransfer()-帮助扩容2.2.1、transfer()-扩容2.2.2、untreeify()-红黑树转链表2.2.3、TreeBin()-红黑树链表节点构造函数2.3、treeifyBin()-链表转红黑树get方法1、get()-方法入口2.1、find()-ForwardingNode的查找方法2.2、find()-TreeBin的查找方法方法入口方法入口 构造原创 2021-08-02 19:37:52 · 264 阅读 · 0 评论 -
ConcurrentHashMap源码解析(一): 常量、成员变量、内部类、部分方法
目录简介常量成员变量内部类链表节点Node红黑树节点TreeNode红黑树链表节点TreeBin扩容完成的红黑树节点ForwardingNode 简介 ConcurrentHashMap是线程安全的Map,Jdk1.7之前采用的是Segment数组结构和HashEntry数组结构组成,Jdk1.8之后采用的是synchronized+数组+链表/红黑树组成。个人认为ConcurrentHashMap是JDK常用集合源码解析最难的,楼主本人也啃了好久,中途也放弃过,屡败屡战,终于完成了常用方法的解读,给大家分原创 2021-07-26 15:57:52 · 170 阅读 · 0 评论 -
Java并发源码分析之CountDownLatch
关联文章: Java并发源码分析之AQS及ReentrantLock Java并发源码分析之Semaphore Java并发源码分析之ReentrantReadWriteLock Java并发源码分析之Condition Java并发源码分析之CyclicBarrier 目录工作原理概要类图使用demo构造函数CountDownLatch进入等待1、CountDownLatch-await进入等待状态入口2、AQS-acquireSharedInterruptibly加入队列中自旋等待申请锁3、CountD原创 2021-07-23 14:40:06 · 122 阅读 · 0 评论 -
Java并发源码分析之CyclicBarrier
目录工作原理概要Demo使用代码运行结果 工作原理概要 Demo使用 代码 public class CyclicBarrierRunnable implements Runnable { private CyclicBarrier cyclicBarrier; public CyclicBarrierRunnable(CyclicBarrier cyclicBarrier) { this.cyclicBarrier = cyclicBarrier; }原创 2021-07-22 20:05:13 · 123 阅读 · 0 评论 -
Java并发源码分析之Condition
目录工作原理概要主要方法原理概述Condition 进入等待状态解析1、await进入等待状态入口2、addConditionWaiter将当前线程封装成等待节点加入等待队列, 并返回3、unlinkCancelledWaiters解绑无效的等待节点, 生成新的等待队列4、fullyRelease释放当前线程持有的锁5、isOnSyncQueue判断node节点是否在同步队列中6、checkInterruptWhileWaiting检查挂起期间是否被中断7、节点回到竞争状态,处理线程状态8、reportIn原创 2021-07-21 17:44:19 · 177 阅读 · 0 评论 -
Java并发源码分析之ReentrantReadWriteLock
目录工作原理概要类图原理概述Sync关键常量内部类关键变量读锁/写锁计算方法ReadLock获取读锁流程1、ReadLock–获取锁入口2、AQS–acquireShared获取共享锁3、Sync–tryAcquireShared尝试获取共享锁 工作原理概要 ReentrantReadWriteLock是基于AQS框架构建的,相关类图如下: 类图 AbstractOwnableSynchronizer:抽象类,定义了独占锁线程,exclusiveOwnerThread AbstractQueuedSync原创 2021-07-21 14:15:18 · 172 阅读 · 0 评论 -
Java并发源码分析之Semaphore
关联文章: Java并发源码分析之AQS及ReentrantLock 工作原理概要 AQS是用来构建锁的基础框架,ReentrantLock是基于AQS构建的排它锁,而Semaphore则是基于AQS构建的共享锁。两者对比如下: 对比项 ReentrantLock Semaphore 锁的类型 排它锁 共享锁 state 锁的可重入次数 锁的剩余个数 是否支持可重入 支持 支持 是否支持非公平锁 支持 支持 是否支持公平锁 支持 支持 类图 AbstractOwnab原创 2021-07-20 12:30:42 · 127 阅读 · 0 评论 -
Java并发源码分析之AQS及ReentrantLock
AQS及ReentrantLock源码解析工作原理概要关键变量功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 工作原理概要 AQS全称是AbstractQueuedSynchronizer,抽象同步队列,是用来构建锁或其他组件的基原创 2021-07-19 20:30:34 · 299 阅读 · 4 评论