difference between hashmap and hashtable|
Possible Duplicate:
Differences between HashMap and Hashtable?
前几天我去面试了,面试官问我在什么情况下使用hashmap会有问题,而不是hashtable?这意味着给出一个使用hashtmap会导致问题的例子,但是使用hashtable可以解决问题。
他告诉我运行代码的机器是单核的!!
我给了一个EG
我告诉过,如果T1和T2同时执行,那么它将导致问题。他说,由于它是一个单核CPU,它将永远不会并行执行两个语句。
有人能澄清一下,什么时候会有问题?有什么情况的例子吗?
编辑:我把这个问题通过hashmap和hashtable进行了链接,我知道hashtable方法是同步的,hashmap方法不是同步的,我已经告诉他了
据我所知,我只是简单地跟在后面。代码从来没有崩溃过?我不能使用hashtable,但它仍然是a:)中的hashmap。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
与新的集合实现不同,哈希表是同步的。这就是为什么我可以想象使用hashmap会产生问题,使用hashtable可以解决问题。
它是单核的事实并不重要:如果thread1在
我认为你在问之前必须先做以下事情:
通过上述两种方法得到以下结果:
stackoverflow:hashmap和hashtable之间的区别?
谷歌
hashmap和hashtable有什么区别
hashmap和hashtable之间的区别?我们可以使hashmap同步吗?
希望有帮助:)
你可以在这里清楚地找到区别…
http://javabynataraj.blogspot.com/2010/09/java-interview-questions-download.html
这里,同步化是这个场景中应该使用哈希表的主要原因。在这种情况下,即使使用了一个内核,也不能保证
这可能导致输出不一致。如果使用hashtable,因为它是同步的,所以在调用
有关详细信息,请参阅此线程
这里有一个很好的链接,你可以参考它:hashmap和hashtable之间的区别?
我想知道他们是否如你所说的那样问你,因为他似乎想问哪一个是安全的,哪一个不是。
哈希表是线程安全的,但他为什么问哈希表的问题?
嗯,仅仅因为它是单核,并不意味着你不能有比赛条件。有可能吗?这意味着您将不会遇到内存可见性问题,但您当然可以在一个核心上运行多个线程,并且它们仍然可以被调度,以便获得竞争条件。