JDK源码
jeanheo
这个作者很懒,什么都没留下…
展开
-
【JDK1.8源码阅读】 HashMap源码实现分析整理(一)
文章目录HashMap数据结构概括元素属性构造函数、容量算法和哈希碰撞优化put插入或更新Map元素putVal实现resize获取或调整Map容量迁移算法实现原理:链表树化、红黑树链化与拆分红黑树特性treeifyBin树化putTreeVal 插入红黑树元素split 红黑树拆分untreeify 红黑树链化get获取Map元素getNode 根据key 哈希值和key对象获取节点remove...原创 2019-02-16 13:48:33 · 528 阅读 · 0 评论 -
【JDK1.8源码阅读】 LinkHashMap源码实现分析整理(二)
文章目录LinkHashMap数据结构分析类定义linkNodeLast 插入双链表尾部afterNodeAccess 节点访问回调,设为尾节点回调时机用途原理分析afterNodeRemoval 节点移除回调afterNodeInsertion 节点插入回调entrySet 遍历元素参考LinkHashMap数据结构分析LinkHashMap相对HashMap,记录了元素的插入顺序,在遍历时...原创 2019-02-16 13:49:38 · 422 阅读 · 0 评论 -
【JDK1.8源码阅读】 ArrayList源码实现分析整理(三)
文章目录ArrayList基本实现原理基本定义核心操作add添加数组元素实现其他核心操作实现参考ArrayList基本实现原理ArrayList底层数据结构是一个数组,元素根据插入顺序排列,支持随机访问,添加删除元素的时间复杂度是O(n),访问元素是O(1)。在每次添加元素时,会先确保容量足够,如果容量不够,会进行扩容,扩容的原理是新建一个长度为原来容量的1.5倍+1或能够完全容纳新增元素个...原创 2019-02-16 13:50:04 · 247 阅读 · 0 评论 -
【JDK1.8源码阅读】 JUC锁基础源码实现分析整理(四)
JUC(java.util.concurrent)下定义了JDK关于锁相关的框架。整体锁框架可参照参考文章的一张图:对其中每个工具类介绍如下:LockLock为接口类型,Lock实现提供了比使用synchronized方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的Condition对象。Lock接口的基本API定义如下:publi...原创 2019-02-16 13:50:29 · 408 阅读 · 0 评论 -
【JDK1.8源码阅读】 AbstractQueuedSynchronizer队列同步器应用和实现深度解析(五)
文章目录AQS实现原理AQS实现细节分析同步队列实现独占式同步状态获取与释放acquire 堵塞获取独占式同步状态addWaiter 将节点加入到同步队列尾部acquireQueued堵塞尝试获取同步状态acquireInterruptibly 可被打断独占式获取同步状态tryAcquireNanos 可超时和被打断独占式获取同步状态cancelAcquire从队列中撤销获取同步状态release...原创 2019-02-16 13:50:52 · 325 阅读 · 0 评论 -
【JDK1.8源码阅读】ReentrantLock源码实现分析整理(六)
重入锁ReentrantLock实现了Lock接口,即实现了加解锁操作的基本API,在此基础上,ReentrantLock提供以下特性:支持同一线程对资源的重复加锁,即同一线程重复调用lock方法不会堵塞,但后续解锁次数需要和加锁次数同步,才能真正意义地释放锁。支持获取锁时的公平和非公平性选择。在ReentrantLock,有3个非常核心的内部类:Sync,FairSync,Nonfai...原创 2019-02-16 13:51:18 · 683 阅读 · 0 评论 -
【JDK1.8源码阅读】ConditionObject相关源码实现分析整理(七)
Condition接口定义Condition将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set (wait-set)。其中,Lock 替代了 synchronized 方法和语句的使用,Condition 替代了 Object 监视器方法的使用。可以通过await()...原创 2019-02-16 13:51:40 · 300 阅读 · 0 评论 -
【JDK1.8源码阅读】ReentrantReadWriteLock源码实现分析整理(八)
ReentrantReadWriteLock基本原理分析像ReentrantLock实现的是一个排他锁,即若有一个线程获取锁,其他线程都不能再次获取。而ReentrantReadWriteLock提供了一种共享锁策略,即如果有线程获取的是共享锁,则其他线程可以继续获取共享锁,但不能获取排他锁;而如果当前线程获取了排他锁,则其他线程共享锁和排他锁都不能获取。基于ReentrantReadWrit...原创 2019-02-16 13:52:03 · 273 阅读 · 0 评论 -
【JDK1.8源码阅读】ThreadPoolExecutor线程池源码实现分析整理(九)
文章目录线程池优点线程池基础组成部分ThreadPoolExecutor基本定义线程池状态变量ctl线程池核心参数工作队列workQueueThreadFactory线程创建工厂5)RejectedExecutionHandler(饱和策略)线程池运行监控常见实例核心运行流程execute 执行任务Worker工作类关闭线程池shutdown方法实现1. 检查shutdown权限2. 设置线程池控...原创 2019-02-16 13:52:29 · 382 阅读 · 0 评论