![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java-SE
文章平均质量分 60
c-y
这个作者很懒,什么都没留下…
展开
-
高并发下的HashMap有哪些问题?
HashMap在扩容时要进行resize操作,扩容分为两步: 1、申请一个新数组,长度是原来的2倍 2、遍历原数组,将原始重新hash进新数组,hash公式:index=HashCode(Key) & (length-1)如果HashMap到达临界容量需要扩容,两个线程同时进行resize操作,同时开辟两块空间,线程挂起时机不当时,rehash会产生环路。当然,还会发生,一个线程迭代时,另一个线原创 2017-11-22 12:06:09 · 2727 阅读 · 1 评论 -
Java HashMap的实现原理
HashMap HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干。HashMap数组每一个元素的初始值都是Null。原创 2017-11-21 22:08:00 · 207 阅读 · 0 评论 -
ConcurrentHashMap的实现原理
HashMap不是线程安全的,在多线程下会出现错误。ConcurrentHashMap是HashMap的线程安全版本。JDK1.7 采用分段锁机制实现其最主要的概念是Segment Segment本身就相当于一个HashMap对象。同HashMap一样,Segment包含一个HashEntry数组,数组中的每一个HashEntry既是一个键值对,也是一个链表的头节点。 单一的Segment结构原创 2017-11-22 20:59:32 · 303 阅读 · 0 评论