并发容器简介

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

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

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

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

并发场景下的Map

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

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

并发场景下的List

读多写少用CopyOnWriteArrayList

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

相关推荐
隔窗听雨眠4 分钟前
ORM框架选型指南:MyBatis与Hibernate的全面对比
java·开发语言·数据库
j7~11 分钟前
【C++】类和对象(上)--带你全面理解类和对象的概念,以及this指针的理解和相关面试题
java·开发语言·封装·this指针·类的实例化·访问限定符·类的命名
于先生吖12 分钟前
同城物流创业项目,Java源码搭建多车型搬家拉货、就近配货预约小程序
java·开发语言·小程序
码不停蹄的玄黓13 分钟前
Java 异常分类
java·开发语言
江湖中的阿龙18 分钟前
23种设计模式
java·开发语言·设计模式
可可嘻嘻大老虎20 分钟前
SpringBoot拦截器防重复提交实战
java·spring boot·后端
RainCityLucky24 分钟前
Java Swing 自定义组件库分享(十一)
java·笔记·后端
ch.ju25 分钟前
Java Programming Chapter 4——The set method assigns a value to the property.
java·开发语言
Sam_Deep_Thinking26 分钟前
SaaS多租户业务差异化:扩展点机制的设计与实现
java·架构
我登哥MVP29 分钟前
Spring Boot 从“会用”到“精通”:Rest风格原理
java·spring boot·后端·spring·maven·intellij-idea·mybatis