原因:
1、加入多个分段锁浪费内存空间
2、生产环境中,map在放入时竞争同一个锁的概率非常小,分段锁反而会造成更新等操作的长时间等待。
3、为了提高GC的效率

java8中的新方案:CAS
首先通过hash找到对应的链表后,查看是否是第一个object,如果是,直接用cas原则插入,无需加锁,如果不是链表第一个object,则直接用链表的第一个object加锁,这里加的锁是synchronized,虽然效率不如reentrantlock,但是节约了空间,这里会一直用第一个object为锁,直到重新计算map大小,比如扩容或者操作了第一个object为止。
(这里只是参考了其他人的文章,感觉说得也不是很清楚。。)