JUC 一 ConcurrentHashMap

ConcurrentHashMap是一个支持并发检索和并发更新的线程安全的HashMap(但不允许空key或value)。
JDK8以CAS+synchronized来保证并发安全。

特点

效率:

  1. 当期望许多线程访问一个给定collection时,ConcurrentHashMap通常优于同步的HashMapConcurrentSkipListMap通常优于同步的TreeMap
  2. 当期望的读数和遍历远远大于列表的更新数时,CopyOnWriteArrayList优于同步的ArrayList

ConcurrentHashMap、HashMap和HashTable的区别:

  1. HashMap 是非线程安全的哈希表,常用于单线程程序中。
  2. Hashtable 是线程安全的哈希表,由于是通过内置锁 synchronized 来保证线程安全,在资源争用比较高的环境下,Hashtable 的效率比较低。
  3. ConcurrentHashMap 是一个支持并发操作的线程安全的HashMap,但是他不允许存储空key或value。使用CAS+synchronized来保证并发安全,在并发访问时不需要阻塞线程,所以效率是比Hashtable 要高的。

作者:泰迪的bagwell
链接:https://www.jianshu.com/p/0fb89aefac66
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

猜你喜欢

转载自www.cnblogs.com/loveer/p/11409543.html