SynchronizedMap 和 ConcurrentHashMap 有什么区别?

Posted programb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SynchronizedMap 和 ConcurrentHashMap 有什么区别?相关的知识,希望对你有一定的参考价值。

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

访为 map。

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

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

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

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

升是显而易见的

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

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

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

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

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

以上是关于SynchronizedMap 和 ConcurrentHashMap 有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

ConcurrentHashMap 和 Collections.synchronizedMap(Map) 有啥区别?

SynchronizedMap 和 ConcurrentHashMap 有什么区别?

SynchronizedMap 和 ConcurrentHashMap 有什么区 别?

SynchronizedMap和ConcurrentHashMap有什么区别?

Java 同步块与 Collections.synchronizedMap

Collections中的synchronizedMap方法是不是同步读写操作[重复]