Collections.synchronizedList & CopyOnWriteArrayList
2018-01-12 15:12
507 查看
ArrayList是非线性安全,即在一方在便利列表,而另一方在修改列表时,会报ConcurrentModificationException错误。而这不是唯一的并发时容易发生的错误,在多线程进行插入操作时,由于没有进行同步操作,容易丢失数据。
Vector是一个线程安全的列表,采用数组实现。其线程安全的实现方式是对所有操作都加上了synchronized关键字,这种方式严重影响效率,因此,不再推荐使用Vector了。
CopyOnWriteArrayList和Collections.synchronizedList是实现线程安全的列表的两种方式。
两种实现方式分别针对不同情况有不同的性能表现,其中CopyOnWriteArrayList的写操作性能较差,而多线程的读操作性能较好。而Collections.synchronizedList的写操作性能比CopyOnWriteArrayList在多线程操作的情况下要好很多,而读操作因为是采用了synchronized关键字的方式,其读操作性能并不如CopyOnWriteArrayList。因此在不同的应用场景下,应该选择不同的多线程安全实现类。
相关文章推荐
- Collections.synchronizedList & CopyOnWriteArrayList
- JDK源码-CopyOnWriteArrayList.java 顺带 ArrayList Vector Collections.synchronizedList(List list)
- CopyOnWriteArrayList与Collections.synchronizedList的性能对比
- CopyOnWriteArrayList与Collections.synchronizedList的性能对比
- CopyOnWriteArrayList与Collections.synchronizedList的性能对比
- CopyOnWriteArrayList与Collections.synchronizedList的性能对比
- CopyOnWriteArrayList与Collections.synchronizedList的性能对比
- CopyOnWriteArrayList与Collections.synchronizedList的性能对比
- CopyOnWriteArrayList与Collections.synchronizedList的性能对比
- CopyOnWriteArrayList与Collections.synchronizedList的性能对比
- CopyOnWriteArrayList与Collections.synchronizedMap性能比较
- ConcurrentHashMap和 CopyOnWriteArrayList提供线程安全性和可伸缩性 以及 同步的集合类 Hashtable 和 Vector Collections.synchronizedMap 和 Collections.synchronizedList 区别缺点
- CopyOnWriteArrayList与Collections.synchronizedMap性能比较
- CopyOnWriteArrayList与Collections.synchronizedMap性能比较
- CopyOnWriteArrayList与Collections.synchronizedMap性能比较
- JAVA提高二十:CopyOnWriteArrayList&CopyOnWriteArraySet&ConcurrentHashMap介绍
- 【线程安全的List】CopyOnWriteArrayList的原理及使用
- 怎样线程安全地遍历List:Vector、CopyOnWriteArrayList
- ConcurrentLinkedQueue & CopyOnWriteArrayList
- Java线程集合类ConcurrentHashMap&CopyOnWriteArrayList 深入