CopyOnWriteArrayList

简介: CopyOnWriteArrayList

公众号merlinsea


  • CopyOnWriteArrayList
  • 在做set操作的时候,如果set对应位置的oldValue不等于newValue的时候,会在内存中拷贝一份新的数组,这时候内存中存在两个数组实例的问题,并且此时其他元素读取内容还是老数组中的内容。由于加锁的操作,保证了任何时候至多只能有一个线程对其进行写操作,故内存中最多存在两个数组,不可能有三个四个数组存在。
  • 设计思想:读写分离,最终一致。读操作是对原来的数组操作,写操作是拷贝一个新的数组操作,然后在将新的数组复制给老的数组


缺点:内存中可能会存在两个内存一致的数组,因此存在内存的浪费问题

640.jpg

  • get操作不加锁,只在增add,删remove,改set操作才加锁,在增、删、改的每个方法中获取reentrantLock实例,保证线程安全性。

640.jpg


  • 适用场景:多线程环境下,针对读多写少的场景非常适用,因为copyOnWriteArrayList可以保证读操作不加锁,同时写操作保证线程安全。


算法训练营永久刷题班元旦优惠价,超低价格永久刷题。加入我们可以一起备战明年的春招笔试,快来参加吧~

元旦算法训练营教学福利来啦~

奔跑的小梁,公众号:梁霖编程工具库leetcode刷题直播教学,手把手带你刷题,元旦价格优惠通知,超低价格永久刷题


相关文章
|
28天前
|
存储 安全 Java
ConcurrentLinkedQueue详解
通过本文的介绍,希望您能够深入理解 `ConcurrentLinkedQueue`的工作原理、主要特性、常用方法以及实际应用,并在实际开发中灵活运用这些知识,编写出高效、健壮的并发程序。
27 3
|
4月前
|
存储 安全 算法
JUC集合: ConcurrentLinkedQueue详解
与此同时,它的无界特性在使用时需要注意,因为过多的数据累积可能会导致内存消耗过大。合理应用 `ConcurrentLinkedQueue` 不仅可以提升应用性能,还能提高程序在并发环境下的可靠性。在实际的开发过程中,合理选择适当的并发容器对于构建高效稳定的系统至关重要。
53 2
|
5月前
|
安全 Java 容器
CopyOnWriteArrayList原理
文章主要讨论了CopyOnWriteArrayList的工作原理。CopyOnWriteArrayList通过“写时复制”的策略和ReentrantLock锁来保证线程安全性,适用于读多写少的场景;该实现牺牲了一定的写入性能(因为每次写入都需要复制整个数组),但显著提高了读取性能;在多线程环境中,特别是读取操作远多于写入操作时,CopyOnWriteArrayList是一个非常有效的选择。
|
7月前
|
存储 设计模式 并行计算
CopyOnWriteArrayList:深入理解Java中的线程安全List原理和应用
CopyOnWriteArrayList:深入理解Java中的线程安全List原理和应用
|
8月前
|
安全 Java 容器
Java一分钟之-并发编程:并发容器(ConcurrentHashMap, CopyOnWriteArrayList)
【5月更文挑战第18天】本文探讨了Java并发编程中的`ConcurrentHashMap`和`CopyOnWriteArrayList`,两者为多线程数据共享提供高效、线程安全的解决方案。`ConcurrentHashMap`采用分段锁策略,而`CopyOnWriteArrayList`适合读多写少的场景。注意,`ConcurrentHashMap`的`forEach`需避免手动同步,且并发修改时可能导致`ConcurrentModificationException`。`CopyOnWriteArrayList`在写操作时会复制数组。理解和正确使用这些特性是优化并发性能的关键。
79 1
|
安全
HashMap 是线程安全的吗?
HashMap 是线程安全的吗?
82 0
|
SpringCloudAlibaba 安全 前端开发
JUC系列(三) 不安全的集合类
在多线程的情况下 我们常用的一些集合并不能保持线程的安全 那么我们该怎么办呢
JUC系列(三) 不安全的集合类
|
缓存 安全 Java
看了CopyOnWriteArrayList后自己实现了一个CopyOnWriteHashMap
看了CopyOnWriteArrayList后自己实现了一个CopyOnWriteHashMap
211 0
看了CopyOnWriteArrayList后自己实现了一个CopyOnWriteHashMap
|
存储 安全 Java
CopyOnWriteArrayList 你了解多少?
相信大家对 ConcurrentHashMap 这个线程安全类非常熟悉,但是如果我想在多线程环境下使用 ArrayList,该怎么处理呢?阿粉今天来给你揭晓答案!
CopyOnWriteArrayList 你了解多少?
|
安全 Java C++
CopyOnWriteArrayList的使用,你了解么?
CopyOnWriteArrayList的使用,你了解么?
179 0