Java的ConcurrentHashMap 底层了解

 

最近有人问Java8 中ConcurrentHashMap 底层实现,这里简单列下。

大家都知道 Java8 对 HashMap 、ConcurrentHashMap 进行了改进,前者非线程安全,后者线程安全。

HashMap

在Java 7 中,采用哈希表结构

在Java 8 中,采用哈希表 + 红黑树

ConcurrentHashMap

在Java 7 中,采用分段的哈希表

在Java 8 中,采用数组 + 链表 + 红黑树

两者类似,下边主要讲下ConcurrentHashMap。

 

 

 

 

热门文章

暂无图片
编程学习 ·

【MPI编程实现梯形积分法】

MPI编程实现梯形积分法1.1问题描述1.2算法实现1.3结果实现与分析1.4源码实现 1.1问题描述 实现课件中的梯形积分法的MPI编程熟悉并掌握MPI编程方法,规模自行设定,可探讨不同规模对不同实现方式的影响。实验环境:联想笔记本,集成开发环境:Visual Studio 1.2算法实现 每个进…
暂无图片
编程学习 ·

Eslint配置问题

Eslint配置问题rule规则配置解释Eslint问题解决方案 rule规则配置解释 "no-alert": 0,//禁止使用alert confirm prompt "no-array-constructor": 2,//禁止使用数组构造器 "no-bitwise": 0,//禁止使用按位运算符 "no-caller": 1,//禁止…
暂无图片
编程学习 ·

渗透测试之内网横向渗透

内网横向渗透当我们在获取了外网服务器的权限,进入该系统后,我们要想尽办法从该服务器上查找到我们想要的信息。对于windows主机,我们应该多去翻翻目录,或许能有很多意想不到的结果。很多人习惯把账号密码等容易忘的东西存放在备忘录中,或者是桌面上。我们还可以查找数据库…
暂无图片
编程学习 ·

8080端口被占怎么办 ,解决方法

用后端springboot启动,8080端口 报错 8080 in use 打开 控制台 win+R 输入 cmd 进入后输入netstat -ano 肉眼能找到找就完事了如果找不到 输入netstat -aon|findstr “8080”找到最后一列的那个数字 “26252”, 就是PID 码 然后打开系统的 任务管理器 ,你要是任务管理器都不…
暂无图片
编程学习 ·

idea中编辑注释信息的内容

idea中编辑注释信息的内容 以前用eclipse开发,注释都是自己提前编好的,刚接触idea希望也能像eclipse一样的方便,上网查了一下,主要是设置两个注释一个是创建类时的自动注释,一个是方法上的注释 1、创建类时的自动注释 打开idea 依次点击File->Settings->Editor->…
暂无图片
编程学习 ·

对简单文本的下载

import requests ser=requests.get() #一般为md格式 novel=ser.text k=open(要保存文件的位置和文件名,a+) #例:F:/desktop file/文件名.txt k.write(novel) k.close()什么是md文件, md全称markdown,markdown是一种标记语言。
暂无图片
编程学习 ·

Java工具类-使用RSA验签

1 私钥签名public static String signByKey(String content,String privateKey) {PKCS8EncodedKeySpec sp = new PKCS8EncodedKeySpec(new BASE64Decoder().decodeBuffer(privateKey));KeyFactory keyFactory = KeyFactory.getInstance("RSA");PrivateKey key = keyF…
暂无图片
编程学习 ·

启动Altium Designer20时界面卡几分钟的处理办法

开始启动Altium Designer20时界面卡在Explorer Starting EDMS Interface时处理办法首先解释下,AD20卡在这里是因为在连接AD的服务器,而使用破解版的话就有可能会卡在这个界面(也有人用破解版不会卡在这里)因为这是软件在启动时连接服务器导致的,所以咱们只需要把他连接网络…
暂无图片
编程学习 ·

Vue之处理边界情况

处理边界情况All the features on this page document the handling of edge cases,meaning unusual situations that sometimes require bending Vue’s rules a little. Note however, that they all have disadvantages or situations where they could be dangerous.特殊情…
暂无图片
编程学习 ·

用自行实现的优先队列进行四字成语汉字频率统计

文章目录背景构建最大堆代码实现测试通过最大堆实现优先队列成语汉字频率统计案例统计四字成语文件中的汉字出现频率的前5位项目结构汉字频率的类优先队列测试类成语汉字统计主程序 背景 在《自已做动画及编写程序搞清楚最大堆的实现原理》这篇文章中,我们通过动图分析编 码自…
暂无图片
编程学习 ·

文件-复制-删除-移动

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.InputStream; import java.io.PrintWriter; public class CopyFile { public CopyFile() { } /** * 新建目录 * @param folderPat…
暂无图片
编程学习 ·

Java解决问题_7

java解决关于“完数”的问题 问题描述: 一个正整数的因子是所有可以整除它的正整数。而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3(6的因子是1,2,3)。 现在,你要写一个程序,读入两个正整数n和m(1<=n<m<1000),输出[n,m]范围内所有…
暂无图片
编程学习 ·

C语言求两个数的最大公约数

#include<stdio.h> int main () {int i,j,t;scanf("%d %d",&i,&j);int m;if(i>j)//比较两者大小,让i存储两者较小的数; {t=i; //如果I>J,i j 位置互换 i=j;j=t;}for(m=i;m>0;m--)//因为两数的最大公约数必然是比两数最大的数字小,可能小于…
暂无图片
编程学习 ·

区块链存在哪些问题需待被解决?

虽然说区块链越来越被大家熟知,全国各地的政策也都在逐渐利好,但是区块链的实际落地应用,在我们身边却很少见到。区块链目前大部分是政府在推动使用,接下来是企业,可以说目前区块链技术基本上是完全ToB的,没有ToC。如果你把炒币算进去的话,那就有ToC了。区块链技术的落地…
暂无图片
编程学习 ·

adb命令大全总结

adb安装或卸载adb install -r xxx.apk //覆盖安装,保留数据和缓存文件adb install -s xxx.apk //安装apk到sd卡adb install -f xxx.apk //安装apk到内部系统内存adb install -d xxx.apk //安装低版本apkadb install -g xxx.apk //准许安装 apk manife…
暂无图片
编程学习 ·

【云服务器】安全设置

采用 云服务器官方放开所有的端口,自定义安全组限制 IP + IP段。服务器使用 防火墙开放 指定的端口。通过 云服务器控制 访问的 IP地址,通过 防火墙控制放开的端口。
暂无图片
编程学习 ·

STL常用函数底层原理

sort 在数据量大时采用快排,递归将数据分段,快速排序对“几近排序”的数据效率会下降;当分段后数据长度小于16时,为避免递归带来过大的额外负荷,采用插入排序,插入排序对“几近排序”的数据表现更好;当递归层次过深,采用堆排序,因为快排时间最差是O(N^2),堆排时间最差…
暂无图片
编程学习 ·

比特币协会圆满举办两届BSV编程马拉松,多个团队脱颖而出,荣获奖金及投资

活动时间:2019年5月4日-5月5日、2019年8月17日-8月19日 活动主办方:比特币协会 活动合作方:CoinGeek 活动评审:nChain2019年,比特币协会举办了两场线上虚拟编程马拉松,这是针对开发者的限时的编程比赛,参赛者都是为了赢得丰厚的奖金池。在编程马拉松期间,参赛者的任务是…