由于HashMap在put,get的操作的时候没有用锁控制,会出现并发的问题。因此,hashTable就产生了,在hashTable中所有的线程读写操作都是串行化的(被synchronized修饰方法)。如果,采用读写锁呢,当大量读写锁冲突的时候,也会导致多线程并发的时候效率降低。
    因此,concurrentHashMap对锁进行了一个优化,拆分锁的粒度,类似于分布式锁优化的实践,把一份数据拆分为多份数据,对每一份数据片段来加锁,这样就可以提升多线程并发的效率。
    ConcurrentHashMap就做了分段加锁,把一份数据拆分成多个segment,对每一段设置一把小锁,如果是读写操作的时候,仅仅就是锁掉你的那个数据的一个segment而已,锁一部分数据。其他线程去操作别的segment是和当前线程操作的那块segment是没有竞争的。