当我需要使用hashMap,因为它不同步

时间:2013-05-14 16:44:35

标签: java hashmap

  

我知道Hashtable是同步的,而HashMap不是。

据我所知,同步意味着一个线程一次访问一个对象。

因此使用Hashtable时没有问题。但在我的项目中,我正在使用HashMap。我用过它 在很多地方。直到现在我对HashMap没有任何问题。

因此,当同步概念出现时(即使用HashMap)。

我可以在使用HashTable的所有地方使用HashMap吗?

我可以在使用HashMap的所有地方使用HashTable吗?

2 个答案:

答案 0 :(得分:5)

  

使用Hashtable

时没有问题

不完全 - 在某些情况下,哈希表确实需要外部同步(例如在迭代时)。

  

同步概念何时会出现在图片中(即使用HashMap)?

如果你有一个包含HashMap的类:

public class SomeClass {
    private Map map = new HashMap();
}

并且您从多个线程访问map,您可能会遇到意外行为并应使用足够的同步。

只要你只从一个线程访问你的地图,或者它是一个方法中的局部变量,你就可以了。

  

我可以在使用HashTable的所有地方使用HashMap吗?

比照上面:如果几个线程没有访问地图,则为yes。

  

我可以在使用HashMap的所有地方使用HashTable吗?

总是如此,尽管在性能方面可能效率较低。

答案 1 :(得分:0)

除非多个线程同时访问同一个实例,否则没有问题。如果您正在使用多个线程,您也可以查看ConcurrentMap