ConcurrentHashMap(1.7)分析

  1. 先来了解ConcurrentHashMap中的几个成员,当然大多数与HashMap中的相似,我们只看独有的成员

  2. 构造函数

3 . 我们来看put()方法

  1. 来具体看一下SegementMask与SegmentShift这两个变量时怎么使用的?

上面是构造函数中计算这两个变量的代码。

我们假设concurrencyLevel为默认值16,那么经过计算得到,ssize = 16,sshift = 4,segmentShift = 28, segementMask = 15

由于ssize为segements数组的大小,我们可以发现,当 n 与 segmentMask按位与时候正好可以得到

Original: https://www.cnblogs.com/liwangcai/p/11881068.html
Author: 神奇海螺。
Title: ConcurrentHashMap(1.7)分析

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/574164/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • google和oracle闹掰,Java 会不会被抛弃?

    眼花缭乱的编程语言 程序界的语言实在太多,但有一种语言不得不说,那就是java语言,Java语言是Android系统的主要开发语言,现在和Google的关系不是很好,但是他会被淘汰…

    Java 2023年6月9日
    088
  • Java8新特性系列-Date Time API

    在 Java 8 中,引入了一个新的日期时间 API,以弥补旧日期时间 API 的以下缺点。 不是线程安全的 – java.util.Date 不是线程安全的,因此开发人员在使用日…

    Java 2023年6月7日
    061
  • 【Redis】ziplist压缩列表

    压缩列表 压缩列表是列表和哈希表的底层实现之一: 如果一个列表只有少量数据,并且数据类型是整数或者比较短的字符串,redis底层就会使用压缩列表实现。 如果一个哈希表只有少量键值对…

    Java 2023年6月8日
    096
  • SpringBoot使用自定义注解+AOP+Redis实现接口限流

    为什么要限流 系统在设计的时候,我们会有一个系统的预估容量,长时间超过系统能承受的TPS/QPS阈值,系统有可能会被压垮,最终导致整个服务不可用。为了避免这种情况,我们就需要对接口…

    Java 2023年6月16日
    072
  • Vim入门

    一般模式 启动Vim后进入命令模式 此状态下敲击键盘会被Vim识别为命令,而非输入字符 以下为常用的几个命令: i :切换到 输入模式,以输入字符 x :删除当前 光标所在处的字符…

    Java 2023年6月5日
    087
  • 第四周总结-SSM框架整合

    java;gutter:true;</p> <h2>1,SSM整合</h2> <h3>1.1 流程分析</h3> &lt…

    Java 2023年6月7日
    048
  • 为什么有了并发安全的集合还需要读写锁?

    大家好,我是三友,这篇文章想来跟大家来探讨一下,在Java中已经提供了并发安全的集合,为什么有的场景还需要使用读写锁,直接用并发安全的集合难道不行么? 在java中,并发安全的集合…

    Java 2023年6月16日
    0119
  • 堆排序获取TopN

    package com.zjl.tool.sort; /** * 求前面的最大K个…

    Java 2023年6月16日
    073
  • Java数组的常见算法2

    求数值型数组中元素的最大值、最小值、平均值、总值等 2. 数组的复制、反转、查找(线性查找、二分法查找) 求数值型数组中元素的最大值、最小值、平均值、总值等 package com…

    Java 2023年6月5日
    084
  • (转) MySQL中的意向锁

    详解 MySql InnoDB 中意向锁的作用 posted on2022-09-29 21:54 茶倌 阅读(9 ) 评论() 编辑 Original: https://www….

    Java 2023年6月8日
    076
  • mybatis selectkey ‘id’ attribute should be defined

    1.情景展示 在idea当中,使用selectKey标签,错误信息提示:selectkey ‘id’ attribute should be defined…

    Java 2023年5月30日
    079
  • 字符串匹配—KMP算法

    KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的…

    Java 2023年6月9日
    077
  • SpringBoot 开发案例之参数传递的正确姿势

    前言 开发这么多年,肯定还有不少小伙伴搞不清各种类型的参数是如何传递的,很多同学都是拿来即用,复制粘贴一把撸,遇到问题还是一脸懵逼。 姿势 学习参数传递的正确姿势,先说怎么做,再说…

    Java 2023年5月30日
    081
  • 各种java面试题目

    地址:https://www.cnblogs.com/crazymakercircle/p/14365820.html 月薪过5万 面试题 总目录 搞定下面这些面试题,2021春招…

    Java 2023年5月29日
    075
  • 软件工程 软件测试 第6篇随笔

    5、软件测试 1.软件测试的目的: 测试是一个为了发现错误而执行程序的过程 一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试用例 一个成功的测试是指揭示了迄今为止尚未发现…

    Java 2023年6月16日
    058
  • SpringBoot集成RabbitMQ简单举例

    操作步骤: 引入依赖包、配置连接参数、新建队列、生产者代码、消费者代码 依赖包 配置连接参数 新建队列 生产者代码 消费者代码 来源项目:dms-test-data Origina…

    Java 2023年5月30日
    062
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球