![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC
盘码客、汤勺
让技术无死角,从技术打桩开始
展开
-
JUC1.8-ConcurrentHashMap源码学习-准备
概述分享下本人在盘ConcurrentHashMap底层源码之前做的技术点预先准备,以及要点方法的学习方式。由于本人之前技术能力也是有限,所以不论之前是有了解过还是未了解的同学都是可以阅读。 当然小菜鸟在阅读学习过程中,有些知识点理解有误,也请各位大佬多多指出。阅读前了解知识点:* 二进制的计算由于在ConcurrentHashMap底层源码过程中,采用大量的位运算代替乘,取余等计算[位...原创 2019-08-30 18:06:07 · 206 阅读 · 0 评论 -
JUC1.8-ConcurrentHashMap源码学习-容量是2次幂以及如何保证是2次幂
前言接着前面那篇 JUC1.8-ConcurrentHashMap源码学习-putVal()方法【】–“为什么在没有指定容量的时,默认容量时16呢?-----为什么容量都是的2的次幂呢?”中的问题展开进行分析解刨;分析过程:这个问题其实会衍生出来另一个问题: ConcurrentHashMap是怎么保证容量每次都是2的次幂呢?看可以指定初始容量构造方法:public Concurren...原创 2019-09-02 16:43:41 · 323 阅读 · 1 评论 -
JUC1.8-ConcurrentHashMap源码学习-putVal()方法
前言在进入主题前,先用一段描述性的话,来帮助理解put的整体思路:需求: A盒子[容量不知],N物品。 现在让N物品放入到A盒子中;过程:1. 首先要先有一个N物品;2. 在给N物品打上在A盒子的位置坐标,方便我后面获取【类似去超市,储物柜道理】;3. 在看看有没有A盒子。如没有,就去得造一个A盒子,放物品的人,没告诉需要多大容量的盒子,那么默认造一个2次幂的容量的盒子。 注意:这...原创 2019-09-02 16:46:45 · 322 阅读 · 0 评论 -
JUC1.8-ConcurrentHashMap源码学习-get()
前言前面几篇,我们已经对ConcurrentHashMap的put和初始化,以及细节的一些知识有所了解,大家是不是会感觉还是有些许难度? 没关系,这章咱们来看看另一个常用而且算是简单的读取方法get来增强咱们看源码的自信哈。在看之前,带着这么俩个问题思考:1、看看读方法,与前面的put方法有哪些小关联?2、在读取数据时,如果Map是如何确保读数据的线程安全?上硬菜源码:public ...原创 2019-09-03 10:43:42 · 163 阅读 · 0 评论 -
JUC1.8-ConcurrentHashMap源码学习-扩容方法解析transfer()
前言笔者在阅读此篇扩容机制时,对Doug Lea大神佩服的五体投地,满满的精华,还没有全部读懂,真的像一杯好酒,需要满满酝酿,细细品味乐趣以及其中奥妙呀,可以说ConcurrentHashMap的最璀璨的地方就在这里。 不扯了,上源码,具体流程均在代码提现,篇幅较多,慎重。private final void transfer(Node<K,V>[] tab, Node<K,...原创 2019-09-04 22:44:05 · 380 阅读 · 0 评论 -
JUC1.8-ConcurrentHashMap源码学习-为什么每次扩容是原来两倍?
##前言这个问题是扩容里面的一个遗留问题,前因后果大家可以去查阅上篇博客JUC1.8-ConcurrentHashMap源码学习-扩容方法解析transfer() ,在将扩容机制时,篇幅过长,因此单独拿出来说明;大家看过源码或者是读过笔者扩容那篇博客,就知道在每次扩容时,均在原容器的基础上,扩大2倍,贴下transfer()源码里面的位置:if (nextTab == null) { ...原创 2019-09-05 18:04:41 · 1345 阅读 · 0 评论 -
JUC1.8-ConcurrentHashMap学习总结-如果我是面试官,我会问哪些面试题?
前言从9月初,开始写博客开始,因笔者平时也是有工作,陆陆续续经过一周多时间,从学习-》解析-》分析 ,并发包中的第一个并发容器ConcurrentHashMap为止。 过程中确实很花费精力,十分枯燥,也有在某一点上死钻牛角尖的时候,导致一度都想打退堂鼓。 但还是得坚持,慢慢用debug方式,逐行去剖解,分析作者的意图, 每当想明白一个难点时,感觉之前的枯燥呀,烦躁呀,一扫而空,美滋滋。 那...原创 2019-09-06 10:25:36 · 367 阅读 · 0 评论 -
JUC1.8-CopyOnWriteArrayList源码分析
前言CopyOnWriteArrayList 原理:先通过名字定义来看,“在写时复制的列表” 其原理也是如名字含义显而易见。 先看几个着重点:1、线程安全2、适合多读少写场景3、弱一致性4、迭代器不支持可变操作【add,set,remove】大家先把这4点留个印象在脑海里,带着这些点,咱们通过源码跟踪【add,set,indexOf ,remove】进行逐一证实上述观点。1、数据...原创 2019-09-09 17:17:33 · 135 阅读 · 0 评论