ConcurrentHashMap
是一个支持并发检索和并发更新的线程安全的HashMap(但不允许空key或value)。
JDK8以CAS+synchronized
来保证并发安全。
特点
效率:
- 当期望许多线程访问一个给定collection时,
ConcurrentHashMap通常优于同步的HashMap
,ConcurrentSkipListMap通常优于同步的TreeMap
- 当期望的读数和遍历远远大于列表的更新数时,
CopyOnWriteArrayList优于同步的ArrayList
ConcurrentHashMap、HashMap和HashTable的区别:
- HashMap 是非线程安全的哈希表,常用于单线程程序中。
- Hashtable 是线程安全的哈希表,由于是通过内置锁 synchronized 来保证线程安全,在资源争用比较高的环境下,Hashtable 的效率比较低。
- ConcurrentHashMap 是一个支持并发操作的线程安全的HashMap,但是他不允许存储空key或value。使用CAS+synchronized来保证并发安全,在并发访问时不需要阻塞线程,所以效率是比Hashtable 要高的。
作者:泰迪的bagwell
链接:https://www.jianshu.com/p/0fb89aefac66
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。