HashMap源码剖析
程序员楂楂
知道的越多,不知道的越多
展开
-
HashMap线程不安全的体现
前言:我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,但是其线程不安全主要体现在什么地方呢,本文将对该问题进行解密。 1.jdk1.7中的HashMap 在jdk1.8中对HashMap做了很多优化,这里先分析在jdk1.7中的问题,相信大家都知道在jdk1.7多线程环境下HashMap容易出现死循环,这里我们先用代码来模拟出现死循环的情况: public class H...转载 2020-03-24 10:33:21 · 150 阅读 · 0 评论 -
ConcurrentHashMap的底层实现原理与源码剖析
简单介绍:在程序中需要线程安全而不需要同步的情况下,ConcurrentHashMap与HashTable是完全可以互操作的。 HashMap是根据散列值分段存储的,同步Map在同步的时候锁住了所有的段,而ConcurrentHashMap加锁的时候根据散列值锁住了散列值对应的那段,因此提高了并发性能。 ConcurrentHashMap内部结构: ConcurrentHashMap为了提高本...原创 2019-02-21 14:46:16 · 2981 阅读 · 0 评论 -
JDK1.7中HashMap底层实现原理
一、数据结构 HashMap中的数据结构是数组+单链表的组合,以键值对(key-value)的形式存储元素的,通过put()和get()方法储存和获取对象。 (方块表示Entry对象,横排表示数组table[],纵排表示哈希桶bucket【实际上是一个由Entry组成的链表,新加入的Entry放在链头,最先加入的放在链尾】,) 二、实现原理 成员变量 源码分析: /** 初始容量...转载 2020-03-24 10:22:25 · 239 阅读 · 0 评论