并发容器简介

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

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

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

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

并发场景下的Map

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

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

并发场景下的List

读多写少用CopyOnWriteArrayList

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

相关推荐
ANYOLY10 分钟前
多线程&并发篇面试题
java·面试
用户2986985301423 分钟前
Java高效读取CSV文件的方法与分步实例
java·后端
南北是北北23 分钟前
RecyclerView 的数据驱动更新
面试
uhakadotcom25 分钟前
coze的AsyncTokenAuth和coze的TokenAuth有哪些使用的差异?
后端·面试·github
Chejdj27 分钟前
StateFlow、SharedFlow 和LiveData区别
android·面试
程序员卷卷狗35 分钟前
JVM实战:从内存模型到性能调优的全链路剖析
java·jvm·后端·性能优化·架构
Android-Flutter36 分钟前
kotlin - 正则表达式,识别年月日
java·kotlin
得物技术36 分钟前
线程池ThreadPoolExecutor源码深度解析|得物技术
java·编译器·dns
道可到38 分钟前
直接可以拿来的面经 | 从JDK 8到JDK 21:一次团队升级的实战经验与价值复盘
java·面试·架构
南北是北北1 小时前
RecyclerView 进阶绑定:多类型 / 局部刷新(payload)/ 稳定 ID
面试