同步集合和并发集合

本文探讨了Java中的同步集合和并发集合,包括Hashtable、Vector、同步包装类以及并发集合如ConcurrentHashMap、CopyOnWriteArrayList。同步集合在多线程访问时全局加锁,效率较低,而并发集合如ConcurrentHashMap通过分段锁提高性能,适用于读多写少的场景。CopyOnWriteArrayList在写时复制,确保读操作无需加锁。对于并发集合的使用,需要根据实际情况权衡数据一致性和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

同步集合和并发集合

同步集合类: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值