Java中如何通过java.util.concurrent.ConcurrentHashMap优化多线程映射表处理效率?
- 内容介绍
- 文章标签
- 相关推荐
本文共计942个文字,预计阅读时间需要4分钟。
由于+ConcurrentHashMap+不锁整个表,而是将+bucket+(槽)分段加锁(JDK 8+后改为使用+Node级+CAS+),锁单个链表头或红黑树根(),读操作完全无锁,写操作只阻塞局部冲突的线程。而+Hashtable+所有方法都用+synchronized修饰,或使用+Collections.synchronizedMap(new HashMap())+,在每个方法入口加同一把全局锁——这两种方式在高并发下会严重串行化。
本文共计942个文字,预计阅读时间需要4分钟。
由于+ConcurrentHashMap+不锁整个表,而是将+bucket+(槽)分段加锁(JDK 8+后改为使用+Node级+CAS+),锁单个链表头或红黑树根(),读操作完全无锁,写操作只阻塞局部冲突的线程。而+Hashtable+所有方法都用+synchronized修饰,或使用+Collections.synchronizedMap(new HashMap())+,在每个方法入口加同一把全局锁——这两种方式在高并发下会严重串行化。

