前言:
如今小伙伴们对“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面试技术问答后续会继续提供,想要一口气获得所有答案的小伙伴可以评论交流哦~