60.线程安全的集合类

第一种:

HashTable,Vector 底层使用的Synchronized加锁实现的,性能不高,不推荐。

第二种:

修饰的安全集合 SynchronizedMap,SynchronizedList,性能不高,不推荐。

第三种:

J.U.C安全集合: Blocking类,CopyOnWrite类,Concurrent类。推荐

Blocking类,大部分实现基于锁,一般使用的是ReentrantLock锁,提供用来阻塞的方法。很多线程在不满足条件时会阻塞住。

CopyOnWrite类,通过拷贝的方式来避免多线程读写时的线程安全。使用与读多写少的场景。

Concurrent类(强烈推荐),性能高,内部很多操作使用cas优化,一般提供较高的吞吐量。

Concurrent类缺点:弱一致性

  • 遍历时弱一致性,当利用迭代器遍历时,如果容器发生修改,迭代器仍然可以继续进行遍历,这时内容是旧的。
  • 求大小弱一致性,size操作未必是100%正确。
  • 读取弱一致性。
上一篇:Web前端动画插件:探索、比较与实用指南


下一篇:数据结构--图