文档章节

CopyOnWriteArrayList与Collections.synchronizedMap性能

MarkCo
 MarkCo
发布于 2016/04/20 15:22
字数 228
阅读 39
收藏 0

平台:

AMD X2 5400+2G RAMJDK6eclipse 3.4

CopyOnWriteArrayList:专为多线程并发设计的容器,“写入时复制”策略。

Collections.synchronizedMap:同步容器,独占策略。



分析:

可以看到随着线程数不断翻倍,CopyOnWriteArrayList的访问时间基本也是翻倍,但Collections.synchronizedMap的时间则是*4。在两个线程下Collections.synchronizedMap访问时间大概是CopyOnWriteArrayList5倍,但在64线程的时候就变成了200+。所以如果在容器完全只读的情况下CopyOnWriteArrayList绝对是首选。但CopyOnWriteArrayList采用“写入时复制”策略,对容器的写操作将导致的容器中基本数组的复制,性能开销较大。所以但在有写操作的情况下,CopyOnWriteArrayList性能不佳,而且如果容器容量较大的话容易造成溢出。代码中如果CopyOnWriteArrayList cl按照ArrayList al的方法初始化就会造成溢出。


本文转载自:http://blog.csdn.net/wind5shy/article/details/5396887

共有 人打赏支持
MarkCo
粉丝 2
博文 21
码字总数 5185
作品 0
浦东
架构师
java 中的List,Set,Map,Queue的线程问题

本文内容摘自:http://www.cnblogs.com/sarafill/archive/2011/05/18/2049461.html 总结:具体来说,Vector,Hashtable在操作上是线程安全的,但在遍历时线程并不安全,同理Collections.synch...

IamOkay
2014/11/11
0
0
[Java 并发编程] 集合框架之 同步容器类 & 并发容器类

吾生也有涯,而知也无涯。———《庄子》 通过上一篇文章,我们已经知道设计一个线程安全类的原则和步骤,以及在设计过程中我们应当注意的细节。实际上,Java 的集合库包含了线程安全集合和非...

seaicelin
05/25
0
0
java5同步集合类的应用

一、概述 1、传统集合类在并发访问时的问题说明 2、传统方式下用Collections工具类提供的synchronizedCollection方法来获得同步集合,分析该方法的实现源码。 3、传统方式下的Collection在迭...

哎小艾
01/18
1
0
Hashmap/Hashtable/ConcurentHashmap/synchronizedMap

Hashtable提供了一种易于使用的、线程安全的、关联的map功能。 然而,线程安全性是凭代价换来的——Hashtable的所有方法都是同步的。synchronized是针对整张Hash表的,即每次锁住整张表让线程...

chape
2014/03/24
0
0
Java集合--线程安全(CopyOnWrite机制)

5 Java并发集合 5.1 引言 在前几章中,我们介绍了Java集合的内容,具体包括ArrayList、HashSet、HashMap、ArrayQueue等实现类。 不知道各位有没有发现,上述集合都有一个共同的特点,那就是线...

贾博岩
2017/11/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

IDEA中Maven打包时如何跳过测试

方法1:直接使用IDEA提供的方式 Maven命令栏的工具栏有下图中的图标,上面就写着 Skip Tests 按下图标后,如下图,test就不可用了 直接使用package命令即可。 方法2:自己编辑maven命令 进入...

karma123
7分钟前
0
0
Device eth0 does not seem to be present,delaying initialization.

场景:在进行linux 主机克隆的时候,网卡初始化一般都会有问题,最常见的“Device eth0 does not seem to be present,delaying initialization.”,从字面意思 说eth0没有固化,延迟启动。由...

hnairdb
8分钟前
0
0
国内首个区块链试验区在海南成立

据新华社报道,10月8日,海南自贸区(港)区块链试验区正式在海南生态软件园授牌设立,这也是目前为止国内第一个区块链试验区。 该试验区位于海南生态软件园,与试验区同一天成立还有2家研究...

linuxCool
19分钟前
0
0
Java日期和时间获取问题

获取年月日时分秒 Calendar cal = Calendar.getInstance();//获取年int year = cal.get(Calendar.YEAR);//获取月,范围是0-11,最后使用需+1int month = cal.get(Cal...

lanyu96
38分钟前
11
0
Ceph学习笔记2-在Kolla-Ansible中使用Ceph后端存储

环境说明 使用Kolla-Ansible请参考《使用Kolla-Ansible在CentOS 7单节点上部署OpenStack Pike》; 部署Ceph服务请参考《Ceph学习笔记1-Mimic版本多节点部署》。 配置Ceph 以osdev用户登录: ...

LastRitter
42分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部