Java集合-ConcurrentHashMap(一)

来源:互联网 发布:g92编程锥形螺纹实例 编辑:程序博客网 时间:2024/06/06 12:22

ConcurrentHashMap解析(JDK1.8)

ConcurrentHashMap继承关系图

为什么要用ConcurrentHashMap?

  • HashMap在多线程下会陷入死循环
  • HashTable在HashMap的方法上添加了synchronized,虽然不会死锁,但当线程竞争激烈的情况下,效率会下降的很快,在查询时,线程数量过大,而锁却只有一个,导致大量的线程陷入阻塞,严重影响效率

正是以上原因所以有了ConcurrentHashMap。

ConcurrentHashMap为什么能解决上述问题?

  • HashMap和HashTable的数据结构是 数组加链表和红黑树(链表数目过大时,链表转化为红黑树)。
  • ConcurrentHashMap1.8之前用到的是分段锁(Segment),而1.8启用了一种全新的方式实现,利用CAS算法,底层任然是数组+链表+红黑树 为了达到并发,增加了辅助类,如TreeBin,Traverser等内部类。
原创粉丝点击