两个并发集合ConcurrentHashMap和CopyOnWriteArrayList知识点汇集

简介: ConcurrentHashMap和CopyOnWriteArrayList

1、ConcurrentHashMap和CopyOnWriteArrayList都是多线程里线程安全的类,是HashMap和ArrayList的多线程替代类。不过也不是绝对的数据一致性,只是弱一致性,比如size()等方法需要扫描全表的操作不保证数据一致。与HashMap不同的是,ConcurrentHashMap并不允许key或者value为null。

2、ConcurrentHashMap在1.7里采用的是分段锁Segment,默认并发度是16,自定义并发度的时候是取值为大于等于自定义值的最小2的幂次方的数字,每一个Segment里存放的都是类似于HashMap的数据结构,相当于多个HashMap的集合,只不过对每个HashMap的写操作有lock。对于并发度的设置不要过小也不要过大,过小的话锁竞争频繁,过大的话CPU cache命中率会下降,从而引起程序性能下降。

3、ConcurrentHashMap在1.8里抛弃了分段锁Segment,采用低层次的原子命令,使用无锁算法(CAS算法)。大体实现代码量很大,跟1.7完全不一样,感兴趣的自己看看。

目录
相关文章
|
7天前
|
安全 Java 容器
CopyOnWriteArrayList原理
文章主要讨论了CopyOnWriteArrayList的工作原理。CopyOnWriteArrayList通过“写时复制”的策略和ReentrantLock锁来保证线程安全性,适用于读多写少的场景;该实现牺牲了一定的写入性能(因为每次写入都需要复制整个数组),但显著提高了读取性能;在多线程环境中,特别是读取操作远多于写入操作时,CopyOnWriteArrayList是一个非常有效的选择。
|
3月前
|
编解码 安全 算法
Java多线程基础-18:线程安全的集合类与ConcurrentHashMap
如果这些单线程中的集合类确实需要在多线程中使用,该怎么办呢?思路有两个: 最直接的方式:使用锁,手动保证。如多个线程修改ArrayList对象,此时就可能有问题,就可以给修改操作进行加锁。但手动加锁的方式并不是很方便,因此标准库还提供了一些线程安全的集合类。
55 4
|
3月前
|
存储 安全 NoSQL
5分钟从0到1探秘CopyOnWriteArrayList(满满干货~)
5分钟从0到1探秘CopyOnWriteArrayList(满满干货~)
|
3月前
|
存储 安全 Java
Java并发基础:CopyOnWriteArrayList全面解析
CopyOnWriteArrayList类的最大优点在于读取时无需加锁,非常适合读多写少的并发场景,由于其写操作通过复制底层数据来实现,从而保证了读取数据的一致性和高效性,此外,它简单易用,是快速实现线程安全列表的不错选择,CopyOnWriteArrayList在读操作占主导的场景下,能够提供出色的性能和稳定性。
100 1
Java并发基础:CopyOnWriteArrayList全面解析
|
3月前
|
存储 安全 算法
java多线程之并发容器集合
java多线程之并发容器集合
|
3月前
|
安全 容器
线程安全的集合类(ConcurrentHashMap面试超高频考点)
线程安全的集合类(ConcurrentHashMap面试超高频考点)
41 0
线程安全的集合类(ConcurrentHashMap面试超高频考点)
|
存储 安全 Java
ConcurrentHashMap概念与深入理解
ConcurrentHashMap是Java集合框架中的一个重要类,它是线程安全的哈希表实现。相比于普通的HashMap,ConcurrentHashMap在多线程环境中提供了更好的性能和可靠性。本文将详细介绍ConcurrentHashMap的概念、特点以及其内部实现原理。
159 0
JUC学习(六):HashMap和HashSet的线程不安全问题分析和解决方案(写时复制技术、ConcurrentHashMap)
JUC学习(六):HashMap和HashSet的线程不安全问题分析和解决方案(写时复制技术、ConcurrentHashMap)
JUC学习(六):HashMap和HashSet的线程不安全问题分析和解决方案(写时复制技术、ConcurrentHashMap)
|
缓存 安全 Java
67. 谈谈ConcurrentHashMap是如何保证线程安全的?
67. 谈谈ConcurrentHashMap是如何保证线程安全的?
138 0
67. 谈谈ConcurrentHashMap是如何保证线程安全的?
|
安全 Java
Java并发编程解析,ConcurrentHashMap理解
Java并发编程解析,ConcurrentHashMap理解
105 0
Java并发编程解析,ConcurrentHashMap理解