java.util.Hashtable
对 java.util.Map
接口的每个方法都进行了同步,而 Collections.synchronizedMap(hash_map)
返回一个包含同步方法的包装对象,将调用委托给实际的 hash_map
(如果我说错了,请纠正我)。
我有两个问题:
同步每个方法和使用包装类会产生什么区别?在什么情况下选择其中之一?
当我们执行
Collections.synchronizedMap(hash_table)
时会发生什么?这是否等同于使用普通的java.util.Hashtable
?
Collections.synchronizedMap
的方法意味着在进入实现之前有2个接口虚拟调用,而使用Hashtable最多只有1个虚拟调用,你可以直接将变量声明为Hashtable类型,并且不需要进行虚拟调用。但也许HashMap在其他方面有所不同,使其整体更快。 - Boann