我知道哈希表是同步的,而哈希映射不是。当我需要使用哈希映射,因为它不同步
根据我的知识同步意味着每次通过一个线程访问一个对象。
所以使用Hashtable没有问题。但在我的项目中,我使用HashMap。我在很多地方都用它 。直到现在我没有得到任何问题与HashMap。
所以当同步的概念会进入图片(即使用HashMap)。
我可以在我使用HashTable的所有地方使用HashMap吗?
我可以在我使用HashMap的所有地方使用HashTable吗?
我知道哈希表是同步的,而哈希映射不是。当我需要使用哈希映射,因为它不同步
根据我的知识同步意味着每次通过一个线程访问一个对象。
所以使用Hashtable没有问题。但在我的项目中,我使用HashMap。我在很多地方都用它 。直到现在我没有得到任何问题与HashMap。
所以当同步的概念会进入图片(即使用HashMap)。
我可以在我使用HashTable的所有地方使用HashMap吗?
我可以在我使用HashMap的所有地方使用HashTable吗?
所以有在使用Hashtable的
不完全是没有问题的 - 在某些情况下,哈希表确实需要外部同步(例如在迭代)。
什么时候将同步概念引入图片(即使用HashMap)?
如果持有一个HashMap类:
public class SomeClass {
private Map map = new HashMap();
}
,并从多个线程访问map
,你可能会得到意外的行为,应使用适当的同步。
只要你只从一个线程访问你的地图,或者它是一个方法内的局部变量,你就没问题。
我可以在我使用HashTable的所有地方使用HashMap吗?
cf.上图:是的,如果地图不被多个线程访问。
我可以在我使用HashMap的所有地方使用HashTable吗?
是的,尽管它在性能方面效率可能会降低。
除非多个线程同时访问完全相同的实例,否则没有问题。如果你正在使用多线程,你也可以看看ConcurrentMap
。
某人被投票结束。请给我原因 – PSR 2013-05-14 16:47:53
您问了一个问题,具体关于您在程序中使用它的方式,并没有显示该程序的示例。我们应该如何知道你在你的程序中做了什么是安全的?我们甚至不知道您的程序是否实际上是多线程的。 – Affe 2013-05-14 16:54:00
你好,先生,我问一般不是专门 – PSR 2013-05-14 16:55:16