SynchronizedMap 和 ConcurrentHashMap 有什么区别?

SynchronizedMap 一次锁住整张表来保证线程安全所以每次只能有一个线程来 

访为 map。

ConcurrentHashMap 使用分段锁来保证在多线程下的性能

ConcurrentHashMap 中则是一次锁住一个桶。ConcurrentHashMap 默认将 

hash 表分为 16 个桶诸如 get,put,remove 等常用操作只锁当前需要用到的桶

这样原来只能一个线程进入现在却能同时有 16 个写线程执行并发性能的提 

升是显而易见的

另外 ConcurrentHashMap 使用了一种不同的迭代方式在这种迭代方式中 

iterator 被创建后集合再发生改变就不再是抛出 

ConcurrentModificationException,取而代之的是在改变时 new 新的数据从而 

不影响原有的数据 ,iterator 完成后再将头指针替换为新的数据 ,这样 iterator

线程可以使用原来老的数据而写线程也可以并发的完成改变

posted @ 2020-04-25 00:14  咔啡  阅读(1130)  评论(0编辑  收藏  举报