当前位置: 首页 > news >正文

【多线程】多线程(12):多线程环境下使用哈希表

【多线程环境下使用哈希表(重点掌握)】

可以使用类:“ConcurrentHashMap”

★ConcurrentHashMap对比HashMap和Hashtable的优化点

1.优化了锁的粒度【最核心】

//Hashtable的加锁,就是直接给put,get等方法加上synchronized,就是给this加锁,整个哈希表对象就是一把锁,任何一个针对这个哈希表的操作都会触发锁竞争

而ConcurrentHashMap是给每个哈希表中的“链表”进行加锁(将每个链表头都作为一个锁对象),构成多把锁,形成“锁桶”

这可以保证线程安全

这可以大大降低锁冲突的概率(只有同时进行的两次修改,恰好在修改同一个链表上元素时,才会触发锁冲突)

2.引入了CAS原子操作

哈希表有一个size(链表大小)这样的变量,针对像修改size这样的操作,直接借助CAS完成,不会加锁

3.针对读操作,做了特殊处理

上述的加锁,只是针对写操作来加锁

对于读操作,通过volatile以及一些精巧的代码实现,确保读操作不会读到“修改一半的数据”

4.针对哈希表的扩容,进行了特殊的优化,可以令操作更加稳定

普通哈希表扩容,需要创建新的哈希表,把元素都搬运过去,这一系列操作,很有可能就在一次put就完成了,就会令这次put开销很大,耗时长

ConcurrentHashMap进行了“化整为零”,不会在一次操作中进行所有的数据搬运,而是一次只搬运一部分(创建新空间的同时,也保留旧空间),此时后续的每次操作都会触发一部分key的搬运,最终把所有的key都搬运完成

当新旧空间同时存在时:

1.插入操作——直接插入到新的空间中

2.查询/修改/删除,都是需要同时对旧的空间和新的空间进行操作

相关文章:

【多线程】多线程(12):多线程环境下使用哈希表

【多线程环境下使用哈希表(重点掌握)】 可以使用类:“ConcurrentHashMap” ★ConcurrentHashMap对比HashMap和Hashtable的优化点 1.优化了锁的粒度【最核心】 //Hashtable的加锁,就是直接给put,get等方法加上synch…...

轻量服务器和云服务器ecs哪个好用一些?

轻量服务器和云服务器ecs哪个好用一些?轻量服务器与云服务器ECS在多方面存在显著差异,对于需要高性能计算和大规模数据处理的用户来说,ECS可能是更好的选择;而对于预算有限且需求较为简单的用户来说,轻量服务器可能更为…...

【交通标志识别系统】Python+卷积神经网络算法+人工智能+深度学习+机器学习+算法模型

一、介绍 交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高…...

特种设备作业叉车司机试题附答案

1.发生事故要本着"( )不放过"的原则,查明原因、分清责任、严肃处理。 A.三 B.四 C.五 答案:B 2.柴油发动机在压缩行程终了时气体的温度和压力都比汽油机( )。 A.低 B.高 C.相同 答案:B 3.柴油发动机的压缩比比汽…...

【Nginx系列】Nginx启动失败

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

2024/10/12 计组大题专训

2018: 2019: 2020: 2021:...

2024年腾讯外包面试题(微创公司)

笔试&#xff1a; 1、判断异步执行顺序 console.log(1);setTimeout(()>{Promise.resolve().then(()>{console.log(2);})console.log(3);},0);new Promise ((resolve)>{for(let i0; i<1000;i ){if(i1000){resolve();}}console.log(4);}).then(()>{console.log(5…...

nginx运行时报:No rule to make target ‘build‘, needed by ‘deault‘.Stop

项目场景&#xff1a; 部署前端项目&#xff0c;将打好的前端包&#xff0c;放到服务器上&#xff0c;运行nginx执行&#xff0c;结果nginx运行报错。 问题描述 nginx运行报以下错误&#xff1a; No rule to make target ‘build‘, needed by ‘deault‘.Stop原因分析&…...

dvwa:暴力破解、命令注入、csrf全难度详解

暴力破解 easy模式 hydra -L /usr/share/wordlists/SecLists-master/Usernames/top-usernames-shortlist.txt -P /usr/share/wordlists/SecLists-master/Passwords/500-worst-passwords.txt 192.168.72.1 http-get-form "/dvwa/vulnerabilities/brute/:username^USER^&…...

Java-学生管理系统[初阶]

这次我们来尝试使用Java实现一下"学生管理系统"&#xff0c;顾名思义&#xff0c;就是实现一个能用来管理学生各种数据的系统。在后续学习中我们将对"学生管理系统"进行两种实现&#xff1a; &#x1f4da; 学生管理系统[初阶](不带模拟登录系统) &#…...

微信小程序 详情图片预览功能实现详解

详情图片预览功能实现详解 在开发微信小程序时&#xff0c;我们经常需要实现点击商品图片进行全屏预览的功能。这不仅提升了用户体验&#xff0c;还允许用户进行保存图片、发送给朋友等操作。本文将详细介绍如何实现这一功能。 思路分析 当用户在商品详情页点击图片时&#…...

LeetCode 48 Rotate Image 解题思路和python代码

题目&#xff1a; You are given an n x n 2D matrix representing an image, rotate the image by 90 degrees (clockwise). You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and …...

余承东直播论道智能驾驶:激光雷达不可或缺,华为ADS 3.0引领安全创新

华为余承东:激光雷达,智能驾驶安全性的关键 9月29日,华为消费者业务集团CEO余承东在一场引人注目的直播中,与知名主持人马东就智能驾驶技术的最新进展进行了深入交流。在这场直播中,余承东针对激光雷达在智能驾驶中的必要性问题,发表了明确且深刻的观点,引发了业界和公众…...

51WORLD携手浙江科技大学,打造智慧校园新标杆

当前&#xff0c;国家教育数字化战略行动扎实推进&#xff0c;高等教育数字化转型步伐加快。 紧抓数字教育发展战略机遇&#xff0c;浙江科技大学联合51WORLD、正方软件股份有限公司&#xff08;简称&#xff1a;正方软件&#xff09;&#xff0c;共同研发打造浙科大孪生数智校…...

SAP SD学习笔记09 - 受注传票中的不完全Log 和 Business Partner(取引先机能)

好久没写SD了&#xff0c;今天继续写。 上一章讲了SD的如下知识 - SD的售前的流程&#xff08;引合和見積&#xff08;询价和报价&#xff09;&#xff09; - 数据流的概念&#xff0c;主要就是后传票可以参照前传票&#xff0c;以实现数据的流动&#xff0c;减少输入 - Co…...

【ROS2】里程计(odometry)数据计算、发布

1、里程计消息 1.1 Odometry消息 消息描述:nav_msgs::msg::Odometry 是ROS2中用发布里程计信息的消息,包括:线速度、角速度、位置和朝向 消息路径:/opt/ros/humble/share/nav_msgs/msg/Odometry.msg 消息内容: # 包含父ID std_msgs/Header header# 子ID,即姿势所在的坐…...

AcWing 187 导弹防御系统 暴搜

代码 #include <bits/stdc.h> #define int long long using namespace std;const int N 200010, mod 1e9 7;int n, m, k, x, y, z, ans, t, depth; int w[N], f[N]; int up[N], down[N];bool dfs(int depth, int u, int su, int sd) {if (su sd > depth) return …...

SpringSecurity(三)——自定义优化器

在SpringSecurity中&#xff0c;如果我们在认证或者授权的过程中出现了异常会被ExceptionTranslationFilter捕 获到。在ExceptionTranslationFilter中会去判断是认证失败还是授权失败出现的异常。 一、自定义验证异常类 创建exception包&#xff0c;在exception包下创建自定义…...

STM32通用定时器TIM3的PWM输出实验配置步骤

通用定时器 PWM 输出实验 本小节我们来学习使用通用定时器的 PWM 输出模式。 脉冲宽度调制(PWM)&#xff0c;是英文“Pulse Width Modulation”的缩写&#xff0c;简称脉宽调制&#xff0c;是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。我们可以让定时…...

device tree 预研

linux kernel 引入 dts 的背景 http://www.wowotech.net/linux_kenrel/why-dt.html 什么是 device tree ​ device tree 是一种描述硬件资源的数据结构。device tree 可以描述的信息包括 cpu 的数量和类别、内存基地址和大小、clock 控制器和 clock 使用情况、外设基地址以及…...

从原理到实战:压敏电阻关键参数解析与精准选型指南

1. 压敏电阻的本质&#xff1a;电路中的"电压保险丝" 第一次接触压敏电阻时&#xff0c;我把它当成了普通电阻&#xff0c;结果在电源防护设计上栽了跟头。这种蓝色圆片状的小器件&#xff0c;实际上是电子工程师最常用的过压保护元件之一。它的工作原理很像保险丝&a…...

LaTeX列表排版避坑指南:用enumitem包轻松解决编号重置、缩进和对齐问题

LaTeX列表排版避坑指南&#xff1a;用enumitem包轻松解决编号重置、缩进和对齐问题 在撰写学术论文、技术文档或法律条款时&#xff0c;列表结构是组织内容的重要工具。但LaTeX默认的列表环境往往让用户陷入编号混乱、缩进不一致的泥潭。本文将深入剖析这些痛点的根源&#xff…...

Arm DynamIQ架构缓存一致性协议解析与优化

1. Arm DynamIQ架构中的缓存一致性技术解析在异构计算架构中&#xff0c;缓存一致性协议是确保多核处理器高效协同工作的关键技术。作为Arm体系结构的重要组成部分&#xff0c;DynamIQ共享单元(DSU)通过AMBA ACE和CHI协议实现了灵活的系统级缓存一致性管理。这两种协议虽然设计…...

XHS-Downloader终极指南:如何高效批量下载小红书内容

XHS-Downloader终极指南&#xff1a;如何高效批量下载小红书内容 【免费下载链接】XHS-Downloader 小红书&#xff08;XiaoHongShu、RedNote&#xff09;链接提取/作品采集工具&#xff1a;提取账号发布、收藏、点赞、专辑作品链接&#xff1b;提取搜索结果作品、用户链接&…...

深度学习在甲状腺细胞病理诊断中的创新应用

1. 深度学习在甲状腺细胞病理学中的应用背景甲状腺癌是全球范围内最常见的内分泌系统恶性肿瘤之一&#xff0c;其发病率在过去几十年中持续上升。细针穿刺活检&#xff08;FNAB&#xff09;作为甲状腺结节诊断的金标准&#xff0c;其准确率直接影响后续治疗方案的选择。然而&am…...

Hermes Agent 连接 Taotoken 自定义供应商的配置要点与排错

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Hermes Agent 连接 Taotoken 自定义供应商的配置要点与排错 基础教程类&#xff0c;指导 Hermes Agent 用户按照文档要求&#xff…...

Arduino与FastLED库驱动WS2812B实现彩虹闪烁可穿戴灯光系统

1. 项目概述&#xff1a;用代码点亮创意的可穿戴灯光几年前&#xff0c;我第一次尝试把LED灯带缝进一件卫衣的帽子里&#xff0c;初衷很简单&#xff0c;就是想在做夜跑时更醒目一些。但当那些WS2812B灯珠第一次随着音乐节奏亮起彩虹般流动的色彩时&#xff0c;我知道我打开了一…...

Python网络编程利器:pincer中间件框架的设计原理与应用实践

1. 项目概述与核心价值最近在折腾一个游戏服务器的网络通信模块&#xff0c;偶然间在GitHub上看到了一个名为“pincer”的项目&#xff0c;作者是TheOneWhoAlwaysWatches。这个项目名挺有意思&#xff0c;直译过来是“钳子”或“夹子”&#xff0c;在计算机领域&#xff0c;尤其…...

Arch Linux Hyprland自动化安装脚本:高效打造现代化Wayland桌面环境

Arch Linux Hyprland自动化安装脚本&#xff1a;高效打造现代化Wayland桌面环境 【免费下载链接】Arch-Hyprland For automated installation of Hyprland on Arch Linux or any Arch Linux-based distros 项目地址: https://gitcode.com/gh_mirrors/ar/Arch-Hyprland A…...

终极指南:如何永久冻结IDM试用期实现终身免费使用

终极指南&#xff1a;如何永久冻结IDM试用期实现终身免费使用 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 你是否曾经为IDM&#xff08;Internet Download Ma…...