龙空技术网

Java面试问答宝典(ConcurrentHashMap篇)——如何实现线程安全

千锋重庆 163

前言:

如今小伙伴们对“java线程安全的集合有哪些synchronizedmap”大概比较关怀,同学们都想要知道一些“java线程安全的集合有哪些synchronizedmap”的相关资讯。那么小编在网络上汇集了一些关于“java线程安全的集合有哪些synchronizedmap””的相关知识,希望小伙伴们能喜欢,我们快快来了解一下吧!

我们参加Java培训学习都是希望能够毕业后找到满意的工作,然而培训机构只是推荐就业,我们仍然需要进行面试,提高面试技术问答的正确率有助于增加面试官的满意度。本系列全面汇总了企业Java面试的技术问题,希望能够帮助大家。

本文列举的技术问题有:

HashMap在多线程使用场景下会存在线程安全问题,怎么处理?Collections.synchronizedMap()如何实现线程安全?Hashtable的性能为什么不好??Hashtable和HashMap有什么区别?

更多Java面试技术问答后续会继续提供,想要一口气获得所有答案的小伙伴可以评论交流哦~

问题一:HashMap在多线程使用场景下会存在线程安全问题,怎么处理?

A:

处理⽅案有以下三种:

使用Collections.synchronizedMap()创建线程安全的map集合使用Hashtable使用ConcurrentHashMap

鉴于效率考虑,推荐使用ConcurrentHashMap。

问题二:Collections.synchronizedMap()如何实现线程安全?

A:

Collections.synchronizedMap(map)创建出的SynchronizedMap对象,把当前对象作为互斥量(也可以指定互斥量)。

之后操作该SynchronizedMap,其操作Map的方法都被加上了synchronized。

问题三:Hashtable的性能为什么不好?

A:

Hashtable的每个操作都使用了synchronized上了锁,甚至读的操作也上锁。

问题四:Hashtable和HashMap有什么区别?

A:

Hashtable的键值不能为null,但HashMap可以为null。

HashMap在存放null的键时做了处理。

为什么要Hashtable设计成不能为null?

因为Hashtable如果可以存null,那么有可能导致判断数据是否已存在时,没办法判断是否是null还是不存在。

除此之外,Hashtable的初始化容量是11,扩容时是当前容量*2+1。

更多Java面试技术问答后续会继续提供,想要一口气获得所有答案的小伙伴可以评论交流哦~

标签: #java线程安全的集合有哪些synchronizedmap