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

java中cocurrent包常用的集合类操作

文章目录

  • 前置
  • ConcurrentHashMap
  • CopyOnWriteArrayList/CopyOnWriteArraySet

前置

常规的集合类,比如 ArrayList,HashMap 当作为多线程下共享的变量时候,操作它们时会涉及线程安全的问题

ConcurrentHashMap

适合:需要频繁读写的线程安全的场景
典型应用:存储热点数据,避免重复计算;分布式锁的管理;统计计数器

// putIfAbsent(K key, V value):仅在键不存在时插入
ConcurrentHashMap<String, Integer> cache = new ConcurrentHashMap<>();
cache.putIfAbsent("user:1001", 1); // 确保键不存在时插入
Integer count = cache.get("user:1001");
cache.compute("user:1001", (k, v) -> v == null ? 1 : v + 1); // 原子更新// remove(K key, V value):仅在键值匹配时删除// replace(K key, V oldValue, V newValue):原子替换值

CopyOnWriteArrayList/CopyOnWriteArraySet

适合:读多写少的场景(因为写操作时复制底层数组,读操作无需加锁)

// add(E e):添加元素(写时复制)
CopyOnWriteArrayList<String> listeners = new CopyOnWriteArrayList<>();
listeners.add("listener1");
// 多线程读取
Thread t1 = new Thread(() -> {for (String listener : listeners) {System.out.println(listener);}
});
// 多线程写入
Thread t2 = new Thread(() -> {listeners.add("listener2");
});
t1.start();
t2.start();// get(int index):读取元素(无锁)// iterator():返回弱一致的迭代器(不反映最新修改)
http://www.lryc.cn/news/2395712.html

相关文章:

  • 晶振频率稳定性:5G 基站与航天设备的核心竞争力
  • 基于python脚本进行Maxwell自动化仿真
  • Blueprints - List View Widget
  • docker-compose搭建prometheus以及grafana
  • 进阶智能体实战八、需求分析助手(基于qwen多模态大模型对图文需求文档分析)(帮你生成 模块划分+页面+表设计、状态机、工作流、ER模型)
  • Git -> Git Stash临时保存当前工程分支修改
  • 多线程和并发之线程
  • apptrace 的优势以及对 App 的价值
  • android studio debug调试出现 IOException异常
  • PySpark 中使用 SQL 语句和表进行计算
  • [Python] Python中的多重继承
  • 在 RedHat 系统(RHEL 7/8/9)中安装 ​​pythonnet​​ 和 ​​.NET Core​​ 的完整指南
  • vr中风--数据处理模型搭建与训练
  • Socket网络编程之UDP套件字
  • 前端学习(7)—— HTML + CSS实现博客系统页面
  • Bert和GPT区别
  • 聊一聊接口测试中缓存处理策略
  • RuoYi前后端分离框架实现前后端数据传输加密(二)之前端篇
  • 如何使用.Net Reactor 批量加密 DLL
  • 基于视觉的车道线检测完整代码:让驾驶更安全的开源解决方案
  • Intellij IDEA 查找接口实现类的快捷键
  • 鸿蒙仓颉开发语言实战教程:自定义tabbar
  • 03.MySQL表的操作详解
  • 28 C 语言作用域详解:作用域特性(全局、局部、块级)、应用场景、注意事项
  • MySQL 事务解析
  • 题海拾贝:压缩字符串
  • 【Hive 运维实战】一键管理 Hive 服务:Metastore 与 HiveServer2 控制脚本开发与实践
  • 振动力学的三类基本问题
  • 04.MySQL数据类型详解
  • 移动端 UI自动化测试学习之Appium框架(包含adb调试工具介绍)