专栏首页人生得意须尽欢table 是一个由 HashEntry 对象组成的数组
原创

table 是一个由 HashEntry 对象组成的数组

 table 是一个由 HashEntry 对象组成的数组

static final class Segment<K,V> extends ReentrantLock implements Serializable { 
       /** 
        * 在本 segment 范围内,包含的 HashEntry 元素的个数
        * 该变量被声明为 volatile 型
        */ 
       transient volatile int count; 
 
       /** 
        * table 被更新的次数
        */ 
       transient int modCount; 
 
       /** 
        * 当 table 中包含的 HashEntry 元素的个数超过本变量值时,触发 table 的再散列
        */ 
       transient int threshold; 
 
       /** 
        * table 是由 HashEntry 对象组成的数组
        */ 
       transient volatile HashEntry<K,V>[] table; 
 
       final float loadFactor; 
 
       Segment(int initialCapacity, float lf) { 
           loadFactor = lf; 
           setTable(HashEntry.<K,V>newArray(initialCapacity)); 
       } 
 
       void setTable(HashEntry<K,V>[] newTable) { 
           threshold = (int)(newTable.length * loadFactor); 
           table = newTable; 
       } 
 
       /** 
        * 根据 key 的散列值,找到 table 中对应的那个桶(table 数组的某个数组成员)
        */ 
       HashEntry<K,V> getFirst(int hash) { 
           HashEntry<K,V>[] tab = table; 
           return tab[hash & (tab.length - 1)]; 
       } 
}

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

关注作者,阅读全部精彩内容

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ConcurrentHashMap实现原理

    Spark学习技巧
  • 请你说明一下ConcurrentHashMap的原理?

    ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment。HashEntry 用来封装映射表的键 / 值对;Segme...

    剑走天涯
  • 我是这样给阿里面试官吹 ConcurrentHashMap的

    因为上篇文章HashMap已经讲解的很详细了,因此此篇文章会简单介绍思路,再学习并发HashMap就简单很多了,上一篇文章中我们最终知道HashMap是线程不安...

    浅羽技术
  • jdk1.8中ConcurrentHashMap的实现原理

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/...

    提莫队长
  • java-集合

    List以特定索引来存取元素,可以有重复元素。Set不能存放重复元素(用对象的equals()方法来区分元素是否重复)。Map保存键值对(key-value p...

    逐梦的青春
  • ConcurrentHashMap源码阅读

    1. 前言 HashMap是非线程安全的,在多线程访问时没有同步机制,并发场景下put操作可能导致同一数组下的链表形成闭环,get时候出现死循环,导致CPU利用...

    butterfly100
  • ConcurrentHashMap (JDK7) 详解

    tomas家的小拨浪鼓
  • Java集合: ConcurrentHashMap原理分析

    因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。

    范蠡
  • 如何判断一个对象是不是数组

    kai666666
  • 根据 key 计算出对应的 hash 值

    注意:这里的加锁操作是针对某个具体的 Segment,锁定的是该 Segment 而不是整个 ConcurrentHashMap。因为插入键 / 值对操作只是...

    用户7365393
  • [Java并发系列]Java并发容器和框架

    用户2017109
  • 面霸篇:Java 核心集合容器全解(核心卷二)

    码哥在 《Redis 系列》的开篇 Redis 为什么这么快中说过:学习一个技术,通常只接触了零散的技术点,没有在脑海里建立一个完整的知识框架和架构体系,没有系...

    码哥字节
  • JDK 源码中的一些“小技巧”

    均摘选自JDK源码 1 i++ vs i-- String源码的第985行,equals方法中: while (n--!= 0) { if...

    前端教程
  • 嘿嘿,我就知道面试官接下来要问我 ConcurrentHashMap 底层原理了,看我怎么秀他

    上篇文章介绍了 HashMap 源码后,在博客平台广受好评,让本来己经不打算更新这个系列的我,仿佛被打了一顿鸡血。真的,被读者认可的感觉,就是这么奇妙。

    烟雨星空
  • JAVA面试50讲之7:ConcurrentHashMap如何高效实现线程安全

    Java提供了不同层面的线程安全支持。 在传统集合框架内部,除了Hashtable等同步容器 还提供了所谓的同步包装器(Synchronized Wrapper...

    用户1205080
  • 并发安全的 ConcurrentHashMap 实现原理详解并发安全的 ConcurrentHashMap 实现原理详解不变(Immutable)和易变(Volatile)定位段

    哈希表是中非常高效,复杂度为O(1)的数据结构,在Java开发中,我们最常见到最频繁使用的就是HashMap和HashTable,但是在线程竞争激烈的并发场景中...

    一个会写诗的程序员
  • 大数据计数原理1+0=1这你都不会算(一)No.47

    hello哈,大家是不是好久没见到我啦?我也是一直在摸索小伙伴们喜欢看到什么东西,不喜欢看什么东西,还请大家多多支持。为了表示感谢。小蕉在这给你们一鞠躬,二鞠躬...

    大蕉
  • 从HashMap到ConcurrentHashMap

    《HashMap》中已经分析了HashMap的实现,jdk1.7与jdk1.8的实现有很多区别,现在我们分析一下两个版本的差异:

    搬砖俱乐部
  • Java 判断一个字符串是不是由数字组成

    heasy3

扫码关注云+社区

领取腾讯云代金券