java线程安全集合

一、早期线程安全的集合
我们先从早期的线程安全的集合说起,它们是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包下的集合

1. CopyOnWriteArrayList 使用ReentrantLock完成同步操作。

2..CopyOnWriteArraySet使用CopyOnWriteArrayList完成同不

3.ConcurrentSkipListMap、

4.ConcurrentSkipListSet、

5.ConcurrentLinkedQueue、

6.ConcurrentLinkedDeque。

你可能感兴趣的:(JavaSE)