那些年你钻研过的ConcurrentHashMap有哪些难题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2990个文字,预计阅读时间需要12分钟。
前言:我是Fancy,一个有点轻微bug的程序员。一年来,积累的程序已经超过了320个。同事们都很宠爱我,把我养活了整个测试团队。
最近迷上了编程。并发展了编程兴趣。这怎么说的呢?就是你现在工作用不到,一用就在面。
前言我是fancy,一个年纪轻轻bug量就累计到3200个的程序员,同事们都夸我一个人养活了整个测试组。
最近迷上了并发编程。并发这玩意怎么说呢,就是你平时工作用不到,一用就用在面试上。这不,又卷起了并发容器。
那说起并发容器,你一定也知道那几个,CopyOnWriteArrayList、并发队列BlockingQueue,等等。但是作为面试的典中典,聊到并发容器就无法绕开ConcurrentHashMap。
由于篇幅原因,这篇文章不会具体解释那些较为基础的问题,比如为什么散列表数组的长度一定要是2的n次方等。将更多围绕并发这个话题。如有需要,之后会另外讲解。
所以本文我们就来深入聊聊这个大厂面试青睐的对象,八股文里的兰博基尼:ConcurrentHashMap。
以下的技术点都基于JDK1.8~
基础回顾我们都知道,从JDK1.8起,ConcurrentHashMap底层的数据结构就已经从原来的Segment分段锁变为了数组 + 链表 + 红黑树的形态。
它是一款并发容器,一款装数据的容器在并发环境下铁定就会有各种各样的问题。你在单线程环境下玩单机,并发环境下就会有别的线程和你抢数据,抢桶位。因此编写JUC包的大神Doug Lea也都为这些场景一一做了适配,可以说是绝对的并发安全,至少运行了这么多年了也没遇到什么bug。
本文共计2990个文字,预计阅读时间需要12分钟。
前言:我是Fancy,一个有点轻微bug的程序员。一年来,积累的程序已经超过了320个。同事们都很宠爱我,把我养活了整个测试团队。
最近迷上了编程。并发展了编程兴趣。这怎么说的呢?就是你现在工作用不到,一用就在面。
前言我是fancy,一个年纪轻轻bug量就累计到3200个的程序员,同事们都夸我一个人养活了整个测试组。
最近迷上了并发编程。并发这玩意怎么说呢,就是你平时工作用不到,一用就用在面试上。这不,又卷起了并发容器。
那说起并发容器,你一定也知道那几个,CopyOnWriteArrayList、并发队列BlockingQueue,等等。但是作为面试的典中典,聊到并发容器就无法绕开ConcurrentHashMap。
由于篇幅原因,这篇文章不会具体解释那些较为基础的问题,比如为什么散列表数组的长度一定要是2的n次方等。将更多围绕并发这个话题。如有需要,之后会另外讲解。
所以本文我们就来深入聊聊这个大厂面试青睐的对象,八股文里的兰博基尼:ConcurrentHashMap。
以下的技术点都基于JDK1.8~
基础回顾我们都知道,从JDK1.8起,ConcurrentHashMap底层的数据结构就已经从原来的Segment分段锁变为了数组 + 链表 + 红黑树的形态。
它是一款并发容器,一款装数据的容器在并发环境下铁定就会有各种各样的问题。你在单线程环境下玩单机,并发环境下就会有别的线程和你抢数据,抢桶位。因此编写JUC包的大神Doug Lea也都为这些场景一一做了适配,可以说是绝对的并发安全,至少运行了这么多年了也没遇到什么bug。

