`

CurrentHashMap原理

    博客分类:
  • java
 
阅读更多

ConcurrentHashMap内部数据结构是hashTable,但是与hashTable不同的是CurrentHashMap使用了锁分离技术,即:使用多个不同的锁来控制对HashTable的不同部分进行修改,其内部的不同部分使用Segment来表示。这样一个大的HashTable就会被分为多个小的HahTable,每个锁作用在不同的小HashTable上。当多个操作发生在不同的Segment上,就可以进行并发操作了。

但是有些操作例如:size(),需要将整个表锁定,先按顺序锁定每个段的,然后进行操作,操作完后再按顺序释放所有段的锁。

ConcurrentHashMap实际上就是将一个大HashTable分割成多个小的HashTable,然后在每个小的HashTable上加锁,实现锁分离。

ConcurrentHashMap的实现方式:

ConcurrentHashMap主要有三个实体类ConcurrentHashMap(整个Hash表),Segment(桶),HashEntry(节点)。

应用场景:当有一个大数组或集合需要多个线程共享

 

分享到:
评论

相关推荐

    ConcurrentHashMap之实现细节

    ### ConcurrentHashMap实现细节详解 #### 一、概述 `ConcurrentHashMap`是Java 5引入的一种高性能、线程安全的散列表实现。相较于传统的`HashMap`,`ConcurrentHashMap`能够支持高并发环境下的多线程读写操作。...

    详谈HashMap和ConcurrentHashMap的区别(HashMap的底层源码)

    HashMap和ConcurrentHashMap的区别 HashMap和ConcurrentHashMap是Java语言中两个常用的哈希表实现,它们都继承自AbstractMap类,实现了Map接口,但是它们之间存在着一些关键的区别。 首先,从数据结构上讲,...

    Java集合思维导图.xmind.zip

    这份"Java集合思维导图.xmind.zip"压缩包文件,显然旨在帮助学习者深入理解Java集合框架的核心原理以及不同版本间的差异。以下是关于Java集合类,特别是HashMap、CurrentHashMap、ArrayList和LinkedList的详细知识点...

    java中ConcurrentHashMap的读操作为什么不需要加锁

    在Java编程语言中,`ConcurrentHashMap`是一个高效且线程安全的散列映射类,特别适合在多线程环境中使用。与传统的`synchronized HashMap`不同,`ConcurrentHashMap`在设计上允许并发的读写操作,其中读操作尤其值得...

    java 使用ConcurrentHashMap和计数器实现锁

    Java 使用 ConcurrentHashMap 和计数器实现锁 Java 使用 ConcurrentHashMap 和计数器实现锁是 Java 编程语言中的一种常见的锁机制实现方式。该机制主要通过使用 ConcurrentHashMap 和计数器来实现线程之间的同步和...

    Java面经.适用于校招

    2.2 CurrentHashMap - ConcurrentHashMap是线程安全的HashMap实现。 2.3 Hashtable - Hashtable是同步的,内部通过synchronized关键字实现线程安全。 2.4 hashtable和hashmap的区别 - Hashtable是古老的集合类,...

    HashMap&ConcurrentHashMap.key

    HashMap& ConcurrentHashMap 深度解析

    java基于ConcurrentHashMap设计细粒度实现代码

    "java基于ConcurrentHashMap设计细粒度实现代码" 概述:本文主要介绍了java基于ConcurrentHashMap设计细粒度实现代码的实现方法,通过ConcurrentHashMap实现细粒度锁,具有一定参考价值,需要的朋友可以了解。...

Global site tag (gtag.js) - Google Analytics