我知道Hashtable是同步的,而HashMap不是。
据我所知,同步意味着一个线程一次访问一个对象。
因此使用Hashtable时没有问题。但在我的项目中,我正在使用HashMap。我用过它 在很多地方。直到现在我对HashMap没有任何问题。
因此,当同步概念出现时(即使用HashMap)。
我可以在使用HashTable的所有地方使用HashMap吗?
我可以在使用HashMap的所有地方使用HashTable吗?
答案 0 :(得分:5)
使用Hashtable
时没有问题
不完全 - 在某些情况下,哈希表确实需要外部同步(例如在迭代时)。
同步概念何时会出现在图片中(即使用HashMap)?
如果你有一个包含HashMap的类:
public class SomeClass {
private Map map = new HashMap();
}
并且您从多个线程访问map
,您可能会遇到意外行为并应使用足够的同步。
只要你只从一个线程访问你的地图,或者它是一个方法中的局部变量,你就可以了。
我可以在使用HashTable的所有地方使用HashMap吗?
比照上面:如果几个线程没有访问地图,则为yes。
我可以在使用HashMap的所有地方使用HashTable吗?
总是如此,尽管在性能方面可能效率较低。
答案 1 :(得分:0)
除非多个线程同时访问同一个实例,否则没有问题。如果您正在使用多个线程,您也可以查看ConcurrentMap
。