大家都知道,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工具网。
推荐阅读: