并发容器简介

由于同步器的串行化严重降低了并发性,Java之后推出了多种并发容器,使用并发容器来替代同步容器,可以提高绳索性并降低风险

J.U.C包中提供了几个非常有用的并发容器作为线程安全的容器:

J.U.C包中提供的并发容器命名一般分为三类:

  • Concurrent:
    • 这类线程比CopyOnWrite要 高一些,但写操作代价要小一些
    • 此外,Concurrent往往提供了较低的遍历一致性,就是说容器发生改变,遍历的操作仍然不会停,在获取容器大小size的时候,容器是否为空等方法,不一定完全准确。
  • CopyOnWrite:一个线程写,多个线程读。读操作时不加锁,写操作时通过在副本上枷锁保证并发安全,空间开销大
  • Blocking:内部实现一般是基于锁,提供阻塞队列的能力

并发场景下的Map

如果对数据有一定的要求,则需使用Hashtable;

在大部分场景通常都是弱一致性 ,使用ConcurrentHashMap 即可;如果数据量 在千万级别,且存在大量增删改操作,则可以考虑使用ConcurrentSkipListMap

并发场景下的List

读多写少用CopyOnWriteArrayList

写多读少用ConcurrentLinkedQueue,需要有容量限制

相关推荐
微露清风7 小时前
系统性学习Linux-第一讲-Linux基础指令
java·linux·学习
tqs_123457 小时前
tcc中的空回滚和悬挂问题
java·数据库
MX_93598 小时前
以配置非自定义bean来演示bean的实例化方式
java·开发语言·后端
哪里不会点哪里.8 小时前
Spring 事务机制详解:原理、传播行为与失效场景
java·数据库·spring
风筝在晴天搁浅8 小时前
hot100 102.二叉树的层序遍历
java·算法
源代码•宸8 小时前
Leetcode—513. 找树左下角的值【中等】
经验分享·算法·leetcode·面试·职场和发展·golang·dfs
lina_mua8 小时前
Cursor模型选择完全指南:为前端开发找到最佳AI助手
java·前端·人工智能·编辑器·visual studio
秋98 小时前
idea中如何使用Trae AI插件,并举例说明
java·人工智能·intellij-idea
输出输入8 小时前
JAVA中return和break区别
java
董世昌418 小时前
null和undefined的区别是什么?
java·前端·javascript