思考:
回答ConcurrentHashMap实现原理,演变过程,与HashTable的区别
ConcurrentHashMap源码演变过程
- 1.5:采用分段锁的方式保证线程安全
- 1.6:优化了Hash算法,解决1.5分段不均匀的问题
- 1.7:优化分段加载,使用懒加载
- 1.8:取消分段锁,采用节点锁,进步提高效率
HashTable与ConcurrentHashMap的区别
其实不应该谈区别,应该把HashTable当做ConcurrentHashMap的一个史前版本,从HashTable到ConcurrentHashMap1.8版本的演变过程,就是一个锁优化的过程,在保证线程安全的情况下,尽量减少性能开销,提高访问效率的过程。
优化启示
- 大锁不如小锁
- 长锁不如短锁
- 公锁不如私锁
- 嵌套锁不如扁平锁
- 消除无用锁