并发容器简介

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

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

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

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

并发场景下的Map

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

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

并发场景下的List

读多写少用CopyOnWriteArrayList

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

相关推荐
毕设源码-郭学长7 分钟前
【开题答辩全过程】以 某某协会管理与展示平台为例,包含答辩的问题和答案
java
多云的夏天13 分钟前
docker容器部署-windows-ubuntu
java·docker·容器
进击的cc15 分钟前
拒绝背诵!一文带你打穿 Android ANR 发生的底层全链路
android·面试
进击的cc20 分钟前
App 启动优化全家桶:别再只盯着 Application 了,热启动优化你真的做对了吗?
android·面试
庞轩px21 分钟前
内存区域的演进与直接内存——JVM性能优化的权衡艺术
java·jvm·笔记·性能优化
编码忘我36 分钟前
java多线程安全集合
java
悟空码字41 分钟前
滑块拼图验证:SpringBoot完整实现+轨迹验证+Redis分布式方案
java·spring boot·后端
编码忘我42 分钟前
java类加载器及tomcat为什么不用双亲委派
java
MegaDataFlowers1 小时前
快速上手Spring
java·后端·spring
小江的记录本1 小时前
【MyBatis-Plus】Spring Boot + MyBatis-Plus 进行各种数据库操作(附完整 CRUD 项目代码示例)
java·前端·数据库·spring boot·后端·sql·mybatis