ConcurrentMap

HashMap非线程安全;Hashtable线程安全但没有它高效。
ConcurrentMap为什么线程安全又高效
它使用Segment和HashEntry两个数组组成,加锁同步加存储K,V键值。

每一个ConcurrentHashMap都包含了一个Segment数组,在Segment数组中每一个Segment对象则又包含了一个HashEntry数组,而在HashEntry数组中,每一个HashEntry对象保存K-V数据的同时又形成了链表结构,此时与HashMap结构相同。

在多线程中,每一个Segment对象守护了一个HashEntry数组,当对ConcurrentHashMap中的元素修改时,在获取到对应的Segment数组角标后,都会对此Segment对象加锁,之后再去操作后面的HashEntry元素,这样每一个Segment对象下,都形成了一个小小的HashMap,在保证数据安全性的同时,又提高了同步的效率。只要不是操作同一个Segment对象的话,就不会出现线程等待。

相关文章:

  • 2021-06-25
  • 2021-10-10
  • 2022-12-23
  • 2022-12-23
  • 2021-10-15
  • 2021-10-05
猜你喜欢
  • 2022-12-23
  • 2021-04-05
  • 2021-06-07
  • 2021-07-10
  • 2021-08-14
  • 2022-01-15
相关资源
相似解决方案