同步集合和并发集合

同步集合和并发集合

同步集合类:Hashtable、Vector 方法上有同步约束 (jdk1.0)

同 步 集 合 包 装 类 : Collections.synchronizedMap(new HashMap<>()) 和Collections.synchronizedList(new ArrayList<>()) —使用的是全局锁

并发集合类:ConcurrentHashMap、CopyOnWriteArrayList、CopyOnWriteHashSet
性能比较
同步集合比并发集合会慢得多,主要原因是锁,同步集合会对整个 Map 或 List 加锁

并发集合的实现原理

ConcurrentHashMap[jdk1.7]把整个 Map 划分成几个片段,只对相关的几个片段上锁,同时允许多线程访问其他未上锁的片段。CopyOnWriteArrayList 允许多个线程以非同步的方式读,当有线程写的时候它会将整个List 复制一个副本给它。如果在读多写少这种对并发集合有利的条件下使用并发集合,这会比使用同步集合更具有可伸缩性。
并发集合的使用建议一般不需要多线程的情况,只用到 HashMap、ArrayList,只要真正用到多线程的时候就一定要考虑同步。所以这时候才需要考虑同步集合或并发集合。
解决方法 1: 给整个集合上添加一个锁

 List<Integer> list
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值