
java线程安全的集合
发布日期:2021-05-06 17:45:28
浏览次数:46
分类:原创文章
本文共 757 字,大约阅读时间需要 2 分钟。
一、早期线程安全的集合
我们先从早期的线程安全的集合说起,它们是Vector和HashTable
1.Vector
Vector和ArrayList类似,是长度可变的数组,与ArrayList不同的是,Vector是线程安全的,它给几乎所有的public方法都加上了synchronized关键字。由于加锁导致性能降低,在不需要并发访问同一对象时,这种强制性的同步机制就显得多余,所以现在Vector已被弃用
2.HashTable
HashTable和HashMap类似,不同点是HashTable是线程安全的,它给几乎所有public方法都加上了synchronized关键字,还有一个不同点是HashTable的K,V都不能是null,但HashMap可以,它现在也因为性能原因被弃用了
二、Collections包装方法
Vector和HashTable被弃用后,它们被ArrayList和HashMap代替,但它们不是线程安全的,所以Collections工具类中提供了相应的包装方法把它们包装成线程安全的集合
三、concurrent包下的集合
- CopyOnWriteArrayList 使用ReentrantLock完成同步操作。
2…CopyOnWriteArraySet使用CopyOnWriteArrayList完成同不
3.ConcurrentSkipListMap、
4.ConcurrentSkipListSet、
5.ConcurrentLinkedQueue、
6.ConcurrentLinkedDeque。
四 BlockingQueue阻塞队列
1 ArrayBlockingQueue
2 LinkedBlockingQueue
3 PriorityBlockingQueue