`
leozam
  • 浏览: 29231 次
社区版块
存档分类
最新评论

CopyOnWriteArrayList,ReadWriteLock,ConcurrentHashMap

 
阅读更多
CopyOnWriteArrayList

原理:当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器

特点:读写分离。读的时候不需要加锁,写的时候需要加锁。适用于读多写少的场景

不足:内存占用过大(写操作时将对对象进行复制);只能保证数据最终一致性,而非实时一致性

参考:http://www.cnblogs.com/dolphin0520/p/3938914.html

ReadWriteLock

特点:对读写状态进行互斥区分,有互斥时才加锁。写与写之间互斥,读与写之间互斥,
读与读之间可以并发执行。区分读写,读的时候使用读锁,写的时候使用写锁。在读多写少的情况下可以提高效率

ConcurrentHashMap

用分离锁实现多个线程间的更深层次的共享访问。(JAVA8貌似做了很大的改动)
用 HashEntry 对象的不变性来降低执行读操作的线程在遍历链表期间对加锁的需求
通过Volatile,协调不同线程间读/写操作的内存可见性
在ConcurrentHashMap中,线程对映射表做读操作时,一般情况下不需要加锁就可以完成,对容器做结构性修改的操作才需要加锁

参考:http://blog.csdn.net/dfsaggsd/article/details/50572974
分享到:
评论

相关推荐

    Java 多线程与并发(7-26)-JUC - 类汇总和学习指南.pdf

    Collections 部分提供了一些并发集合类,例如 CopyOnWriteArrayList、ConcurrentHashMap 等,这些类可以在多线程环境下安全地使用。 3.Atomic: Atomic 部分提供了一些原子类,例如 AtomicInteger、AtomicLong 等...

    面试题大全

    - CopyOnWriteArrayList与ConcurrentHashMap的并发处理策略 5. 多线程: - 线程的创建(Thread类、Runnable接口、Callable与Future) - 线程同步机制(synchronized、wait/notify、Lock接口、ReadWriteLock) -...

    【互联网一线大厂面试+学习指南】 涵盖大部分Java程序员所需要的面试知识点和面试技巧,分享真实面试经历。.zip

    5. CopyOnWriteArrayList和ConcurrentHashMap在并发环境下的应用。 三、多线程 1. 线程的创建方式:实现Runnable接口和继承Thread类。 2. 线程同步机制:synchronized关键字,wait()、notify()和notifyAll()方法。 ...

    面试题 java方向 新版

    - CopyOnWriteArrayList和ConcurrentHashMap:在并发环境下的集合使用。 3. **多线程** - 线程创建:通过Thread类和Runnable接口创建线程。 - 线程同步:理解synchronized关键字,死锁、活锁和饥饿现象。 - ...

    Java面试题资料超全.rar

    - CopyOnWriteArrayList和ConcurrentHashMap等并发容器。 4. **IO流** - 字节流和字符流的区别,以及它们的主要类。 - File类的操作,如读写文件,创建、删除、移动文件。 - 缓冲流(BufferedReader、...

    基于Java多线程与线程安全实践(源码+使用文档)

    并发集合操作:展示如何在多线程环境下安全地操作集合类,如ConcurrentHashMap和CopyOnWriteArrayList。 线程生命周期管理:示例代码展示如何创建、启动、管理和终止线程。 线程通信:展示线程间的通信机制,包括...

    数据结构面试题及正确答案

    - **并发Set**:`CopyOnWriteArraySet`基于`CopyOnWriteArrayList`实现,线程安全且高效。 - **并发Map**:`ConcurrentHashMap`是最常用的并发Map,采用锁分段技术提高并发性能。 - **并发Queue**:`...

    《Java并发编程高阶技术-高性能并发框架源码解析与实战》学习.zip

    本书的焦点在于Java并发框架,这些框架如线程池(java.util.concurrent.ThreadPoolExecutor)、并发集合(ConcurrentHashMap、CopyOnWriteArrayList等)以及同步工具类(Semaphore、CyclicBarrier、CountDownLatch等...

    JUC线程锁框架

    JUC提供了并发集合,如ConcurrentHashMap、ConcurrentLinkedQueue、CopyOnWriteArrayList等,它们在多线程环境下提供了高效且安全的数据结构。例如,ConcurrentHashMap在并发环境下比传统HashMap表现更优,而...

    计算机后端-Java-Java高并发从入门到面试教程-容思路.zip

    Java并发模型中的并发容器也是不可忽视的部分,如ConcurrentHashMap、CopyOnWriteArrayList和BlockingQueue等。它们提供了线程安全的数据结构,可以高效地支持并发操作。例如,ConcurrentHashMap在并发环境下提供了...

    多线程程序避免冲突的3条简单规则

    Java提供了一些内置的线程安全数据结构,如`ConcurrentHashMap`、`CopyOnWriteArrayList`和`ConcurrentLinkedQueue`等。这些数据结构在内部实现了同步机制,可以避免在多线程环境中的冲突。 1. `ConcurrentHashMap`...

    java 同步方法

    4. **使用并发容器**:Java并发包中的容器类(如`CopyOnWriteArrayList`、`ConcurrentHashMap`等)已经考虑了并发性能,它们在某些场景下能提供更好的性能。 5. **使用线程局部变量(ThreadLocal)**:对于只与单一...

    Concurrent In java

    `ConcurrentHashMap`还提供了一系列一致性操作方法,如`putIfAbsent`、`remove`、`replace`等,这些方法可以在确保数据一致性的前提下高效地更新数据。 ##### 1.2 BlockingQueue `BlockingQueue`是一个线程安全的...

    java 7并发编程实战手册 源码

    最后,Java 7并发编程还关注了线程安全的集合类,如`ConcurrentHashMap`、`CopyOnWriteArrayList`和`CopyOnWriteArraySet`,它们在多线程环境下提供高性能的并发访问。`ConcurrentHashMap`通过分段锁技术实现了高效...

    龙果学院java并发编程完整视频

    7. **并发集合**: Java并发包`java.util.concurrent`提供了多种线程安全的集合类,如`ConcurrentHashMap`、`CopyOnWriteArrayList`等。 - `ConcurrentHashMap`是一种高性能的线程安全散列表,它通过分割技术来减少...

    heima-JUC-资料

    2. **同步容器**:包括`Vector`、`HashTable`等早期类,以及`ArrayList`和`HashMap`的线程安全版本`CopyOnWriteArrayList`和`ConcurrentHashMap`。它们提供了线程安全的数据结构,适用于多线程环境下的共享数据访问...

    Java 并发编程实战

    Java并发容器如ConcurrentHashMap、ConcurrentLinkedQueue、CopyOnWriteArrayList等是设计用于线程安全的数据结构。它们内部实现了高效的并发控制,可以在不加锁的情况下保证线程安全,提高了并发性能。 此外,Java...

    javaforkjoin源码-gitbook-BAT-interview:本文综合自己在一线互联网工作感悟,经验。记录开源框架的源码解读,数据

    java forkjoin 源码 -- -- geomesa -- spring -- 算法 -- hbase ...[乐观锁&悲观锁,重入锁&非重入锁,公平锁&非公平锁,锁粒度] ...ReadWriteLock源码] ...ConcurrentHashMap源码] ...CopyOnWriteArrayList源码]

    java程序员面试面试题

    面试中可能会讨论到线程同步机制,包括synchronized关键字、volatile、Lock接口(ReentrantLock、ReadWriteLock)以及并发容器(如ConcurrentHashMap、CopyOnWriteArrayList等)。此外,活锁、死锁的概念及其避免...

Global site tag (gtag.js) - Google Analytics