上篇博文在讲解 ConcurrentHashMap 时说到 1.7 中 put 方法实现同步的方式是使用继承了 ReentrantLock 类的 segment 内部类调用 lock 方法实现的,而在 1.8 中是使用 synchronied 锁住要添加数据对应数组的第一个值实现的,关于这两种锁的区别时留了一个坑,现在来补下.众所周知,在多线程下,对共享数据的操作需要格外小心,因为多线程下的各个线程执行的顺序是无法预料的,所以对一个共享数据的操作可能会产生不同的结果,这时我们就需要让线程对共享数…