![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jdk源码
Box_clf
这个作者很懒,什么都没留下…
展开
-
ReentrantLock源码分析-------lock流程
突然觉得看源码也会上瘾,看了这么久的jdk源码,有时候看了就忘了,忘了又看。虽然每次的目的还是为了面试准备,但是有现在慢慢觉得看源码看着看着就会去想为什么会这么实现,为什么可以有这样的效果。可能是自己的求知欲越来越强了吧,不管怎么样,养成看源码的习惯还是不错。 废话不多说了,今天来分析一下ReentrantLock的lock方法的具体流程: ...原创 2020-02-23 01:09:42 · 178 阅读 · 0 评论 -
HashMap的resize()扩容分析
之前有对HashMap的核心源码put流程进行过分析,今天来分析一下resize流程以及移动元素时计算索引的原理。 源码分析 这里对resize的主要流程进行分析,主要结合注释和流程图进行理解。 final Node<K,V>[] resize() { Node<K,V>[] oldTab = table; //当oldTab为nul...原创 2020-02-20 21:28:11 · 744 阅读 · 0 评论 -
线程池源码浅析
基本概念 简单理解,线程池实际上就是一个线程可以复用的队列。 线程池执行的了流程 执行方法核心源码分析: public void execute(Runnable command) { if (command == null) throw new NullPointerException(); int c = ctl.get();//获取当前...原创 2019-03-22 19:13:02 · 203 阅读 · 0 评论 -
JDK1.8中的HashMap核心源码解析
继承类:AbstractMap 继承接口:Map,Cloneable,Serializable 主要性质: 默认初始table使用的是Map.Entry<K,V>[]实现数组 + 链表 结构进行存储 转换临界值:TREEIFY_THRESHOLD = 8;链表长度 >= 8时进行转换,转换成红黑树结构 table默认初始容量为16;DEFAULT_INITIAL_CAP...原创 2019-03-23 11:14:44 · 237 阅读 · 0 评论 -
JDK1.8中的ConcurrentHashMap核心源码解析(通过流程图进行分析)
首先来分析一下JDK1.7中的ConcurrentHashMap结构: 主要使用的是Segment分段锁 内部拥有一个Entry数组,每个数组的每个元素又有一个链表 同时Segment继承ReetrantLock来进行加锁 默认Segment有16个,也就是说可以支持16个线程的并发,在初始化是可以进行设置,一旦初始化就无法修改(Segment不可扩容),但是Segment内部的E...原创 2019-03-22 23:35:19 · 1234 阅读 · 2 评论