CopyOnWriteArrayList详解

本文详细解析了CopyOnWriteArrayList的实现原理、特性和适用场景。它是一种线程安全的集合类,适用于读多写少的并发应用,如缓存。通过三种构造方法创建不同类型的列表,并解释了其内部机制及为何在写操作时性能较低。

CopyOnWriteArrayList详解

1.   CopyOnWriteArrayList(写数组的拷贝)是ArrayList的一个线程安全的变体,CopyOnWriteArrayListCopyOnWriteSet都是线程安全的集合,其中所有可变操作(addset等等)都是通过对底层数组进行一次新的复制来实现的。

2.    它绝对不会抛出ConcurrentModificationException的异常。因为该列表(CopyOnWriteArrayList)在遍历时将不会被做任何的修改。

3.    CopyOnWriteArrayList适合用在“读多,写少”的“并发”应用中,换句话说,它适合使用在读操作远远大于写操作的场景里,比如缓存。它不存在扩容的概念,每次写操作(add or remove)都要copy一个副本,在副本的基础上修改后改变array引用,所以称为“CopyOnWrite”,因此在写操作是加锁,并且对整个listcopy操作时相当耗时的,过多的写操作不推荐使用该存储结构。

4.   CopyOnWriteArrayList的功能是是创建一个列表,有三种构造方法:

(1)CopyOnWriteArrayList ()创建一个空列表。

(2)CopyOnWriteArrayList (Collection<? extendsE> c)

创建一个按 collection的迭代器返回元素的顺序包含指定 collection元素的列表。

(3)CopyOnWriteArrayListE[] toCopyIn

创建一个保存给定数组的副本的列表。

付:private static final变量详解

1.      private是私有的,只在同一个类或内部类里可以访问。

2.      static是静态的,静态的变量是类的变量,不是对象的特性。

3.      final修饰的变量一次赋值将不能被改变。

 

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值