面试:ConcurrentHashMap如何实现线程安全

267 阅读1分钟

思考:

回答ConcurrentHashMap实现原理,演变过程,与HashTable的区别

ConcurrentHashMap源码演变过程

  • 1.5:采用分段锁的方式保证线程安全
  • 1.6:优化了Hash算法,解决1.5分段不均匀的问题
  • 1.7:优化分段加载,使用懒加载
  • 1.8:取消分段锁,采用节点锁,进步提高效率

HashTable与ConcurrentHashMap的区别

其实不应该谈区别,应该把HashTable当做ConcurrentHashMap的一个史前版本,从HashTable到ConcurrentHashMap1.8版本的演变过程,就是一个锁优化的过程,在保证线程安全的情况下,尽量减少性能开销,提高访问效率的过程。

优化启示

  • 大锁不如小锁
  • 长锁不如短锁
  • 公锁不如私锁
  • 嵌套锁不如扁平锁
  • 消除无用锁