多线程环境下存在数据访问不一致或者脏数据,导致线程不安全故需要支持并发操作的数据结构,支持并发其本质还是加锁机制。
List:
- ArrayList:线程不安全,效率高
- Vector:线程安全,适合写多读少
- CopyOnWriteArrayList线程安全,适合写少读多场景,非阻塞方式
- Collections.sychronized(List list)基于synchronized,可以把线程不安全变成线程安全,但是效率差
Set:
- HashSet:线程不安全
- CopyOnWriteArraySet:(基于CopyOnWriteArrayList实现)读多写少,非阻塞
- Collections.sychronized(Set set)基于synchronized,可以把线程不安全的HashSet变成线程安全的,但是效率差
Map:
- HashTable线程安全,同步机制,适合写多读少,效率差
- HashMap线程不安全
- ConcurrentHashMap读多写少,非阻塞
- Collections.sychronized(Map map)基于synchronized,可以把线程不安全的Hashtable变成线程安全的,但是效率差