ConcurrentHashMap解析(JDK1.8)

Java集合-ConcurrentHashMap(一)

为什么要用ConcurrentHashMap?

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

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

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

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

相关文章:

  • 2022-01-04
  • 2023-03-14
  • 2021-07-06
  • 2021-05-22
  • 2021-10-05
  • 2021-11-14
猜你喜欢
  • 2021-08-24
  • 2022-12-23
  • 2023-01-14
  • 2021-08-02
  • 2021-07-26
  • 2022-12-23
  • 2021-05-02
相关资源
相似解决方案