ConcurrentHashMap原理与常见问题
发布时间
阅读量:
阅读量
ConCurrentHashMap实现与应用
目录
前言
1.7实现的ConcurrentHashMap
底层结构---由Segments数组、HashEntry数组以及链表构成,通过分段锁机制确保线程安全
初始化过程
put操作流程
1.8实现的ConcurrentHashMap
底层数据结构如下:
get()操作方式:
put()操作方式:
与ConcurrentHashMap相关的一些问题
1、在JDK1.8版本中,为何选择使用synchronized关键字替代可重入锁ReentrantLock?
2、ConcurrentHashMap与Hashtable之间存在哪些差异?
3、HashMap和ConcurrentHashMap之间有哪些不同之处?
注意
前言
当HashMap中插入的元素数量超出其容量限制时,系统将自动调用rehash方法以实现扩容操作。在多线程环境下执行put操作时,若多个线程同时对具有相同哈希值的位置进行数据写入,可能导致该数组对应的链表结构出现环状连接,从而在后续的get操作中引发死循环问题,因此HashMap不具备线程安全性。
与之相对,HashTable通过采用synchronized关键字对整个表结构进行加锁处理,确保了其在多线程场景下的线程安全性。然而,这种全局锁机制
全部评论 (0)
还没有任何评论哟~
