java中ConcurrentHashMap和Hashtable之间的区别是什么?怎么区分?

BSO 2020-12-01 14:51:39 java常见问答 9048

大家都知道,java中有很多知识都是融会贯通的,一通百通,这也就要求我们对于基础知识掌握的更加透彻,才能更好地理解和学习其他的知识。要学会区分一些基本概念还是需要花一定心思的,一起来看看怎么做吧。

首先,说一下,ConcurrentHashMap和Hashtable之间的区别。

那么Hashtable和ConcurrentHashMap之间的区别是可以在多线程环境中使用,但一旦Hashtable的大小变得相当大时,其性能降低,因为迭代它必须被锁定更长的时间。

由于ConcurrentHashMap引入了分段的概念,所以它只有一部分被锁定才能提供线程安全性.

总而言之,ConcurrentHashMap仅锁定Map的某些部分,而Hashtable在执行迭代时锁定完整映射。

然后介绍一下,ConcurrentHashMap和Collections.synchronizedMap之间的区别

ConcurrentHashMap旨在实现并发性能,提高性能,而通过使用synchronized Map应用包装器,可以同步自然HashMap。

以下是ConcurrentHashMap和Java中的同步映射之间的一些常见区别。

ConcurrentHashMap不允许空值或空值同步,但是HashMap允许一个空键。

最后为大家补充一下,java多线程中并发集合和同步集合有哪些?

java.util.concurrent包中包含的并发集合类如下:

1.ConcurrentHashMap

2.CopyOnWriteArrayList

3.CopyOnWriteArraySet

HashMap 是非同步的,故在多线程中是线程不安全的,不过也可以使用同步类来进行包装:

包装类Collections.synchronizedMap()和Collections.synchronizedList()提供了一个基本的有条件的线程安全的Map和List实现。

其实可以看出来,想要区分一些基础的知识点还是比较简单的,只要大家在学习的过程中能够扎实学习就能掌握的很好了。想要了解更多java常见问题,敬请关注奇Q工具网。

推荐阅读:

java中抽象类和普通类的区别在哪?详细解析

java中session的工作原理是什么?和Cookies有何区别?

java中TCP与UDP区别是什么?GET与POST有何区别?