死循环是因为并发 HashMap 扩容导致的,并发扩容的第一步,线程 T1 和线程 T2 要对 HashMap 进行扩容操作,假设两个线程的指针, T1 和 T2 指向的是链表的头结点元素 A,而 T1 和 T2 的下一个节点,也就是 T1.next 和 T2.next 指向的是 B 节点。
目录致谢0x00 字节跳动-渗透测试实习生0x010x02 深信服-漏洞研究员实习0x030x04 字节跳动-安全研究实习生0x05 长亭科技-安全服务工程师0x06 天融信面试复盘0x07 腾讯-安全技术实习生0x08 小鹏汽车-安全工程师0x09 阿里巴巴-阿里云安全0x0A
ConcurrentHashMap是java.util.concurrent包下的一个类,本质上是一个HashMap,因此功能和HashMap一样,但是在HashMap的基础上,提供了对指定的Node节点加锁来保证数据并发更新的安全性。
众所周知HashMap是工作和面试中最常遇到的数据类型,但很多人对HashMap的知识止步于会用的程度,对它的底层实现原理一知半解,了解过很多HashMap的知识点,却都是散乱不成体系,今天一灯带你一块深入浅出的剖析HashMap底层实现原理。