CopyOnWriteArrayList详解

原创 2012年10月25日 08:05:00

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修饰的变量一次赋值将不能被改变。

 

Java 7之多线程并发容器 - CopyOnWriteArrayList

CopyOnWriteArrayList相当于线程安全的ArrayList,通过增加写时复制语义来实现线程安全性。底层也是通过一个可变数组来实现的。但是和ArrayList不同的时,它具有以下特性: ...
  • mazhimazh
  • mazhimazh
  • 2014年02月14日 20:39
  • 6253

线程安全的CopyOnWriteArrayList介绍

证明CopyOnWriteArrayList是线程安全的先写一段代码证明CopyOnWriteArrayList确实是线程安全的。ReadThread.javaimport java.util.Lis...
  • linsongbin1
  • linsongbin1
  • 2017年01月17日 16:07
  • 10053

Java中的Copy-On-Write容器,CopyOnWriteArrayList和CopyOnWriteArraySet

Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,...
  • sc313121000
  • sc313121000
  • 2016年02月17日 18:14
  • 725

CopyOnWriteArrayList的原理和使用方法

CopyOnWriteArrayList:CopyOnWriteArrayList这是一个ArrayList的线程安全的变体,其原理大概可以通俗的理解为:初始化的时候只有一个容器,很常一段时间,这个容...
  • hua631150873
  • hua631150873
  • 2016年05月03日 16:59
  • 5330

Java提高篇(四):渐析java的浅拷贝和深拷贝

首先来看看浅拷贝和深拷贝的定义:       浅拷贝:使用一个已知实例对新创建实例的成员变量逐个赋值,这个方式被称为浅拷贝。       深拷贝:当一个类的拷贝构造方法,不仅要复制对象的所有非引用...
  • azhegps
  • azhegps
  • 2016年09月01日 09:45
  • 198

java CopyOnWriteArrayList的使用

除了加锁外,其实还有一种方式可以防止并发修改异常,这就是将读写分离技术(不是数据库上的)。 先回顾一下一个常识: 1、JAVA中“=”操作只是将引用和某个对象关联,假如同时有一个线程将引用指向另外...
  • zhangxs_3
  • zhangxs_3
  • 2013年01月11日 18:18
  • 5616

Java中 CopyOnWriteArrayList 的使用

java中,List在遍历的时候,如果被修改了会抛出java.util.ConcurrentModificationException错误。 看如下代码: import java.util.Array...
  • imzoer
  • imzoer
  • 2013年08月04日 23:33
  • 18726

CopyOnWriteArrayList的优点和缺点

CopyOnWriteArrayList的优点和缺点
  • lhl6688
  • lhl6688
  • 2015年02月27日 15:49
  • 873

CopyOnWriteArrayList与Collections.synchronizedList的性能对比

列表实现有ArrayList、Vector、CopyOnWriteArrayList、Collections.synchronizedList(list)四种方式。 1 ArrayList ...
  • zljjava
  • zljjava
  • 2015年08月31日 20:34
  • 6940

Java并发编程:并发容器之CopyOnWriteArrayList(转载)

跨进程编程时,服务端可能会接受多个客户端的请求进行并发性操作,Aidl文件只支持List中的ArrayList,但在服务端使用CopyOnWriteArrayList(并不是ArrayList的子类,...
  • dongbaoming
  • dongbaoming
  • 2016年11月04日 14:08
  • 832
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CopyOnWriteArrayList详解
举报原因:
原因补充:

(最多只允许输入30个字)