线程安全的 List 和 Map 版本

本文探讨了线程安全的List实现,包括Vector、Collections.synchronizedList和CopyOnWriteArrayList,分析了它们的区别和适用场景。同时,提到了Map的线程安全实现,如HashTable和ConcurrentHashMap,强调了不同实现的并发性能和加锁策略。
摘要由CSDN通过智能技术生成

List:

 

Vector:

Vector 和 ArrayList 大同小异,底层都是用数组实现,只是在它的大部分方法(put、get、remover)上添加了 synchronized关键字,用来保证线程安全;另外,ArrayList 在扩容时是在原来的基础上扩展0.5倍,而 Vector是扩展1倍;此外Vector除了 iterator() 和 listIterator() (两个都支持 fail-fast机制)比 ArrayList 多一个支持fail-fast机制的迭代器:elements(),只有 hasMoreElements() 和 nextElement() 方法。

Collections.synchronizedList():

因为 ArrayList 本身不是线程安全的,通过 Collections.synchronizedList(List<T> list) 可以将其包装成一个线程安全的List。它是对无论是读取还是写入的方法都会进行加锁操作;它能把所有List接口的实现类转换成线程安全的List,比Vector有更好的扩展性和兼容性。

synchronizedList的部分源码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值