用ConcurrentHashMap+锁 优化synchronized方法

1、问题发现

虽说,synchronized 关键字万能的,在并发上去之后,这个插入就显得很慢了。仔细观察发现,其实锁的粒度还是再细点,可以根据AlarmRules对象的ID来锁。

2、解决过程

很明显synchronized(rules) 这个写法是有问题的。是基于对象的引用作为锁,只有在rules实例相同的情况下。我们实际情况实例不同,id相同的情况。

查询相关资料。进行相关测试 采用

ConcurrentHashMap(线程安全map) + ​ReentrantLock(可重入的锁)

public class MainTest {public static void main(String[] args) {for (int i = 1; i < 20; i++) {AlarmRules temp = new AlarmRules();temp.setId(i % 4);new Thread(new Test(temp)).start();}System.out.println("for end");}
}


​Runnable

public class Test implements Runnable {private AlarmRules bean;public Test(AlarmRules bean){this.bean = bean;}@Overridepublic void run() {SynchTest.synchMethod(bean);}
}

method

public class SynchTest {private static final Map<Integer, ReentrantLock> LOCK_MAP = new ConcurrentHashMap<>();public static void synchMethod(AlarmRules bean){ReentrantLock lock = LOCK_MAP.computeIfAbsent(bean.getId(), k -> new ReentrantLock());lock.lock();try {System.out.println("bean.getId() = " + bean.getId()+" bean selectOne");Thread.sleep(2000);System.out.println("bean.getId() = " + bean.getId()+" bean insert");Thread.sleep(1000);}catch (Exception e){e.printStackTrace();}finally {lock.unlock();}}
}

效果实现。id不同的完美并发执行。提高了方法的效率。

注意

因我有用 CountDownLatch,在latch.await();  清理资源

LOCK_MAP.remove(rules.getId()); 避免OOM

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

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

相关文章

问题:棕色试剂瓶用于盛装见光易分解的试剂或溶剂。 #其他#学习方法#微信

问题&#xff1a;棕色试剂瓶用于盛装见光易分解的试剂或溶剂。 A、正确 B、错误 参考答案如图所示

Flutter基础 -- Flutter常用组件

目录 1. 文本组件 Text 1.1 基础用法 1.2 Text 定义 1.3 Text 示例 1.4 Text.rich、RichText 、TextSpan 1.5 RichText 示例 2. 导入资源 2.1 加入资源 2.2 加入图片 3. 图片组件 image 3.1 colorBlendMode 混合参数 3.2 fit 图片大小适配 3.3 ImageProvider 图片…

(CVPRW,2024)可学习的提示:遥感领域小样本语义分割

文章目录 相关资料摘要引言方法训练基础类别新类别推理 相关资料 论文&#xff1a;Learnable Prompt for Few-Shot Semantic Segmentation in Remote Sensing Domain 代码&#xff1a;https://github.com/SteveImmanuel/OEM-Few-Shot-Learnable-Prompt 摘要 小样本分割是一项…

开源低代码平台技术为数字化转型赋能!

实现数字化转型升级是很多企业未来的发展趋势&#xff0c;也是企业获得更多发展商机的途径。如何进行数字化转型&#xff1f;如何实现流程化办公&#xff1f;这些都是摆在客户面前的实际问题&#xff0c;借助于开源低代码平台技术的优势特点&#xff0c;可以轻松助力企业降低开…

落地护眼台灯有什么作用?性能卓越的五款大路灯分享

近期&#xff0c;我频繁收到来自粉丝朋友的热切问题&#xff0c;询问落地护眼台灯有什么作用&#xff1f;落地护眼台灯哪个牌子好的问题。随着人们的护眼意识更强&#xff0c;了解到了光线对台灯的影响&#xff0c;纷纷都用起落地护眼台灯来&#xff0c;护眼落地灯能够通过技术…

vue3+elementPlus实现Radio单选切换显示不同内容

el-radio-group 组件方法&#xff1a; <template><el-radio-group v-model"radio"><el-radio :value"0">阶梯达标</el-radio><el-radio :value"1">限时达标</el-radio></el-radio-group> </templ…

Mixly UDP局域网收发数据

一、开发环境 软件&#xff1a;Mixly 2.0在线版 硬件&#xff1a;ESP32-C3&#xff08;立创实战派&#xff09; 固件&#xff1a;ESP32C3 Generic(UART) 测试工具&#xff1a;NetAssist V5.0.1 二、实现功能 ESP32作为wifi sta连接到路由器&#xff0c;连接成功之后将路由器…

SPRM6-A-0B3、SPRM10-A-1C3三位四通比例方向阀放大器

SPRM6-A-0C3、SPRM6-A-0C1、SPRM6-A-0C10、SPRM6-A-0C30、SPRM6-A-0B1、SPRM6-A-0B3、SPRM10-A-1C1、SPRM10-A-1C3、SPRM10-A-1C10、SPRM10-A-1C30、SPRM10-A-1B1、SPRM10-A-1B3直动式操作比例换向阀:安装连接尺寸符合IS04401;用于液压执行器的方向与速度控制:带螺纹安装比例电…

外企跨国大数据迁移的注意事项

跨国数据迁移&#xff0c;对汽车行业来说&#xff0c;是一桩大事。跨国公司在进行这一操作时&#xff0c;会遇到不少挑战&#xff0c;比如网络延迟、数据安全、成本控制等等。今天&#xff0c;咱们就聊聊跨国大数据迁移中&#xff0c;跨国车企需要留意的几个关键点。 跨国大数据…

618网购节,电商能挡住恶意网络爬虫的攻击吗?

目录 爬虫盗取电商数据的步骤 电商平台如何发现网络爬虫&#xff1f; 如何拦截违法网络爬虫 2023年&#xff0c;杭州中院审结了两起涉及“搬店软件”的不正当竞争案件。本案的原告是国内某大型知名电子商务平台的运营主体&#xff0c;而被告则是开发了一款名为“某搬家快速商品…

动态IP与静态IP的优缺点

在网络连接中&#xff0c;使用动态和静态 IP 地址取决于连接的性质和要求。静态 IP 地址通常更适合企业相关服务&#xff0c;而动态 IP 地址更适合家庭网络。让我们来看看动态 IP 与静态 IP 的优缺点。 1.静态IP的优点&#xff1a; 更好的 DNS 支持&#xff1a;静态 IP 地址在…

滨江区代理记账——专业、便捷的服务,让您的企业更加规范、高效

随着社会经济的发展和企业的规模扩大&#xff0c;依法纳税、做好财务工作变得越来越重要&#xff0c;而代理记账&#xff0c;就是这样一个专业的服务平台&#xff0c;为满足广大企业和个体户的会计需求&#xff0c;帮助他们规范财务管理&#xff0c;提高效率。 代理记账可以帮助…

elementUI el-table高度heght和总结summary 同时使用 表格样式异常

背景 同时使用height和 show-summary 样式错位 解决方案 在钩子函数updated 中重新渲染此表格 <el-table :height"autoHeight" show-summary ref"dataTable" >updated() {this.$nextTick(() >{this.$refs.dataTable.doLayout();})},更改后的效果 …

教程 | Navicat 17 管理连接新方法

Navicat 17 提供了比以往更多的连接数据库实例的方式。除了传统的连接字符串方式以外&#xff0c;Navicat 17 还支持 URI 连接&#xff0c;无论身在何处&#xff0c;都可以轻松地通过 URI 访问对象。另外&#xff0c;还有一个新的管理连接功能&#xff0c;即允许你通过一个以用…

展示设计装修要掌握哪些专业

1、室内设计 多数展示设计装修都是在室内进行的&#xff0c;各种展台也可以类比为各种家具。家居环境本身也是一个展厅&#xff0c;展示主人的品味&#xff0c;目标受众就是主人一家。把室内设计拓展到展览设计和展台搭建上&#xff0c;只是受众群体更广泛了&#xff0c;更注重…

Matlab 2024a 建模基础知识全面指南

一、Matlab简介 1. Matlab是什么&#xff1f; Matlab&#xff08;Matrix Laboratory&#xff09;是由MathWorks公司开发的一个高性能的数值计算环境和编程语言。它以其强大的矩阵运算能力、丰富的工具箱和便捷的数据可视化功能而闻名&#xff0c;广泛应用于科学研究、工程模拟…

SVM模型实现城镇居民月平均消费数据分类

SVM模型实现城镇居民月平均消费数据分类 一、SVM支持向量机简介二、数据集介绍三、SVM建模流程及分析一、SVM支持向量机简介 支持向量机是由感知机发展而来的机器学习算法,属于监督学习算法。支持向量机具有完备的理论基础,算法通过对样本进行求解,得到最大边距的超平面,并…

LlamaIndex三 配置

前言 在上篇LlamIndex二 RAG应用开发 - 掘金 (juejin.cn)中&#xff0c;我们学习到LlamaIndex对RAG的全面支持。这篇文章&#xff0c;我们就来细化这个过程&#xff0c;尝试各种配置选项&#xff0c;满足不同场景需求。学习过后&#xff0c;大家再开发RAG应用&#xff0c;会更…

【LeetCode刷题】前缀和解决问题:742.寻找数组的中心下标、238.除自身以外数组的乘积

【LeetCode刷题】Day 15 题目1&#xff1a;742.寻找数组的中心下标思路分析&#xff1a;思路1&#xff1a;前缀和思想 题目2&#xff1a;238.除自身以外数组的乘积思路分析思路1&#xff1a;前缀和思想 题目1&#xff1a;742.寻找数组的中心下标 思路分析&#xff1a; 其实题干…

计算机网络基础-VRRP原理与配置

目录 一、了解VRRP 1、VRRP的基本概述 2、VRRP的作用 二、VRRP的基本原理 1、VRRP的基本结构图 2、设备类型&#xff08;Master&#xff0c;Backup&#xff09; 3、VRRP抢占功能 3.1&#xff1a;抢占模式 3.2、非抢占模式 4、VRRP设备的优先级 5、VRRP工作原理 三…