Java刷题错题笔记-day04-集合

1.在JDK8中,ConcurrentHashMap的数据结构是怎样的?

数组+链表+红黑树,和HashMap一样

  1. Node数组: ConcurrentHashMap内部维护一个Node数组,其中每个Node就是键值对的存储单元。
  2. 链表: 每个Node实际上是一个链表的头节点。当发生哈希冲突时,新的节点会被添加到对应位置的链表中。
  3. 红黑树: 当链表长度达到一定阈值(默认是8),链表会被转换成红黑树。这是为了在高并发情况下提高查找效率。

2.在JDK8中,ConcurrentHashMap如何保证线程安全的?

运用CAS+synchronized机制

ConcurrentHashMap在putVal方法中,添加元素时,
若链表为空,此时使用CAS乐观锁机制添加元素
若链表不为空,(存在Hash冲突场景)使用synchronized悲观锁来保证线程安全

3.在JDK8中,ConcurrentHashMap的get方法如何保证数据一致性的?

volatile+CAS(修改操作时)

1.volatile关键字:ConcurrentHashMapNode类中,键值对的value字段被声明为volatile。这意味着对该字段的读取和写入操作都是原子的,并且会立即被其他线程可见。这有助于确保当一个线程修改了Node中的值时,其他线程能够立即看到最新的值。

static class Node<K,V> implements Map.Entry<K,V> {final int hash;final K key;volatile V val;volatile Node<K,V> next;// ...
}

2.CAS操作: ConcurrentHashMap使用CAS操作来更新Node中的值。当多个线程同时尝试更新同一个Node的值时,只有一个线程会成功,其他线程需要重试。这确保了在并发情况下对Node值的更新是线程安全的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/611931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于深度学习的果蔬检测识别系统(含UI界面、yolov5、Python代码、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下&#xff1a; 算法模型&#xff1a;     yolov5 yolov5主要包含以下几种创新&#xff1a;         1. 添加注意力机制&#xff08;SE、CBAM、CA等&#xff09;         2. 修改可变形卷积&#xff08;DySnake-主…

MySQL之导入以及导出远程备份v

目录 一.navact数据导入导出 1.1 导入 1.2 导出 二. mysqldump命令导入导出数据 2.1 导入 2.2 导出 三.load data file进行数据导入导出&#xff08;只限于单表&#xff09; 3.1 导入 3.2 导出 四.远程连接 好啦就到这里了哦!!!希望帮到你哦!!! 一.navact数据导入导…

CSS响应式布局

目录 rem单位 媒体查询 rem 媒体查询 rem适配方案&#xff08;了解&#xff09; 响应式布局总结 rem单位 1.设置文字大小的单位 px&#xff1a;设置为固定的css像素 em&#xff1a;相对于父元素字体的大小 %&#xff1a;相对于父元素字体的大小 rem&#xff1a;相对于…

CF1165E

洛谷题目链接 Codeforces题目链接 分析 如果只算区间 1 1 1 到 n n n 的话那么将 a a a 升序 b b b 降序排序即可。 我们发现 a i a_i ai​ 一共要乘 i ( n − i 1 ) i\times(n-i1) i(n−i1) 次&#xff0c;所以可以直接将 a i a_i ai​ 乘 i ( n − i 1 ) i\t…

申请企业通配符SSL证书流程

通配符SSL证书&#xff0c;又叫泛域名SSL证书&#xff0c;可以用一张SSL证书同时保护主域名以及主域名下的所有子域名。按照验证方式可以将通配符SSL证书分为DV通配符SSL证书和OV通配符SSL证书。其中OV通配符SSL证书只支持企事业单位申请&#xff0c;又称之为OV企业型通配符SSL…

初识MySQL:数据库相关概念,SQL语法以及DDL(数据库操作,表操作)

目录 1.数据库相关概念2.关系型数据库&#xff08;RDBMS&#xff09;3.SQL通用语法4.SQL分类5.DDL-数据库操作6.DDL-表操作1.查询表2.创建表3.数据类型1.数值类型2.字符串类型3.日期类型 4.修改表5.删除表 1.数据库相关概念 2.关系型数据库&#xff08;RDBMS&#xff09; 关系型…

ConcurrentHashMap的原理分析学习

ConcurrentHashMap 的初步使用及场景 CHM 的使用 ConcurrentHashMap 是 J.U.C 包里面提供的一个线程安全并且高效的 HashMap&#xff0c;所以ConcurrentHashMap 在并发编程的场景中使用的频率比较高&#xff0c;那么这一节课我们就从ConcurrentHashMap 的使用上以及源码层面来…

MVIT图像分类 学习笔记 (附代码)

论文地址&#xff1a;https://arxiv.org/pdf/2104.11227.pdf 代码地址&#xff1a;https://github.com/facebookresearch/SlowFast 1.是什么&#xff1f; MViT&#xff08;Multiscale Vision Transformers&#xff09;是一种多尺度视觉Transformer模型。它的关键概念是逐步增…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷⑤

2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷5 目录 需要竞赛软件包环境以及备赛资源可私信博主&#xff01;&#xff01;&#xff01; 2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷5 模块一 …

Java学习笔记-day06-响应式编程Reactor与Callback、CompletableFuture三种形式异步编码对比

1. Reactor是什么 Reactor 是一个基于Reactive Streams规范的响应式编程框架。它提供了一组用于构建异步、事件驱动、响应式应用程序的工具和库。Reactor 的核心是 Flux&#xff08;表示一个包含零到多个元素的异步序列&#xff09;和 Mono表示一个包含零或一个元素的异步序列…

算法刷题常用方法

&#x1f4d1;前言 本文主要是【java】——算法刷题常用方法的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&…

C语言程序设计考试掌握这些题妥妥拿绩点(写给即将C语言考试的小猿猴们)

目录 开篇说两句1. 水仙花数题目描述分析代码示例 2. 斐波那契数列题目描述分析代码示例 3. 猴子吃桃问题题目描述分析代码示例 4. 物体自由落地题目描述分析代码示例 5. 矩阵对角线元素之和题目描述分析代码示例 6. 求素数题目描述分析代码示例 7. 最大公约数和最小公倍数题目…

代码随想录算法训练营Day24|回溯算法理论基础、第77题. 组合

目录 回溯算法理论基础 理论基础 回溯法解决的问题 回溯法理解 回溯模板 第77题. 组合 前言 算法实现 剪枝优化 总结 回溯算法理论基础 理论基础 在二叉树中已经提到了回溯的概念&#xff0c;回溯是递归的副产品&#xff0c;也叫回溯搜索法&#xff0c;是一种搜索方…

linux磁盘清理_docker/overlay2爆满

问题&#xff1a;无意间发现linux服务器登陆有问题&#xff0c;使用df命令发现目录满了。 1. 确定哪里占用了大量内存。 cd / du -sh * | sort -rh经过一段时间后&#xff0c;显示如下&#xff1a; // 474G home // 230G var // 40G usr // 10G snap // --- 根据实际情…

C++_命令行操作

命令行操作 介绍第一步编译 源码第二部 找到exe 可执行文件第三步看图操作代码测试源码测试结果 介绍 本文介绍命令行操作 1.argc 表示当前输入 参数个数 2.argv 表示当前输入 字符串内容 第一步编译 源码 #include<iostream> #include<string>using namespace st…

Spring Security 6.x 系列(15)—— 会话管理之源码分析

一、前言 在上篇 Spring Security 6.x 系列(13)—— 会话管理之会话概念及常用配置 Spring Security 6.x 系列(14)—— 会话管理之会话固定攻击防护及Session共享 中了清晰了协议和会话的概念、对 Spring Security 中的常用会话配置进行了说明,并了解会话固定攻击防护…

React Native 桥接原生常量

一、编写并注册原生常量方法 在 SmallDaysAppModule 这个模块中有一个方法 getConstans &#xff0c;重载这个方法就可将自定义的常量返回&#xff0c;系统会自行调用该方法并返回定义的常量将其直接注入到 JS 层&#xff0c;在 JS 层直接获取即可。 二、JS 层获取原生常量&am…

el-table 个体行绑定点击事件时 表格中有el-radio和el-checkbox 点击触发两次事件处理方法

问题描述 在element的table中 使用radio或者checkbox 的单击事件,会导致radio或者checkbox的单击事件触发两次 解决办法 <el-table :data"tableData" style"width: 100%" max-height"500" :header-cell-style"tableHeaderCellStyle&q…

chatglm3的api调用

conda activate chatglm3 cd openai_api_demo python openai_api.py 启动ok&#xff0c;然后内网映射后 anaconda启动jupyter !pip install openai1.6.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/ """ This script is an example of using the OpenAI …

Halcon 3D-Transformation 相关算子(一)

(1) hom_mat3d_identity( : : : HomMat3DIdentity) 功能&#xff1a;生成三维齐次变换矩阵。 控制输出参数&#xff1a;HomMat3DIdentity&#xff1a;变换矩阵。 (2) create_pose( : : TransX, TransY, TransZ, RotX, RotY, RotZ, OrderOfTransform, OrderOfRotation, ViewO…