CopyOnWriteArrayList与Collections.synchronizedMap性能
博客专区 > MarkCo 的博客 > 博客详情
CopyOnWriteArrayList与Collections.synchronizedMap性能
MarkCo 发表于2年前
CopyOnWriteArrayList与Collections.synchronizedMap性能
  • 发表于 2年前
  • 阅读 35
  • 收藏 0
  • 点赞 1
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

平台:

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的方法初始化就会造成溢出。


共有 人打赏支持
粉丝 3
博文 19
码字总数 5185
×
MarkCo
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: