Java集合系列之高并发下的集合类

148 阅读1分钟

第一代线程安全集合类

  • Vector, Hashtable
  • 是怎么保证线程安全的: 使用synchronized修饰方法
  • 缺点:效率低下

第二代线程非安全集合类

  • ArrayList, HashMap
  • 线程不安全, 但性能好, 用来代替Vector, Hashtable
  • 使用ArrayList, HashMap, 需要线程安全怎么办呢?
  • 使用Collections.synchronizedList(list), Collections.synchronizedMap(map)
  • 底层使用synchronized代码块锁, 效率有所提升

第三代线程安全集合类

  • 在大量并发情况下如何提高集合的效率和安全?
  • java.util.concurrent.*
  • ConcurrentHashMap
  • CopeOnWriteArrayList
  • CopeOnWriteArraySet
  • 底层大都采用Lock锁(1.8的ConcurrentHashMap不使用Lock), 保证安全的同时, 性能也很高