可能是重复问题:
HashMap和Hashtable之间的区别?
我前几天去参加了一次面试,面试官问我在什么情况下使用hashmap会有问题而使用hashtable可以解决问题? 也就是说,给出一个例子,其中使用hashtmap会导致问题,但使用hashtable将解决问题。
他告诉我代码运行的机器是单核的!
我举了一个例子。
Time Thread1 Thread 2
t0 tb.put("a",1)
t1 tb.put("a",2) int a = tb.get("a");
我说如果在t1时刻t1和t2同时执行,那么会导致问题。他说由于它是单核CPU,它永远不会并行执行两个语句。
有人能澄清一下吗?什么情况下会出现问题?有任何例子吗?
编辑:我通过交换hashmap和hashtable发布了问题。我知道hashtable方法是同步的,而hashmap方法则不是,并且我已经告诉他了。
为了进行实验,我实现了以下内容。代码从未崩溃过吗?我没有使用hashtable,但在A中它仍然是一个hashmap :)
public class MyT extends Thread {
HashMap<String,String > a = A.t;
@Override
public void run() {
while (true) {
a.put("a", "one");
System.out.println(Thread.currentThread().getName());
}
}
public static void main(String[] args) {
MyT t1 = new MyT();
t1.start();
MyT t2 = new MyT();
t2.start();
}
}