Aks*_*hay 5 java hashtable hashmap
可能的重复:
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");
Run Code Online (Sandbox Code Playgroud)
我告诉过,如果在 t1 时 t1 和 t2 同时执行,则会导致问题。他说,由于它是单核CPU,因此永远不会并行执行2条语句
有人可以澄清一下,什么时候会出现问题吗?有情况举例吗?
编辑:我通过交互 hashmap 和 hashtable 发布了这个问题。我知道 hashtable 方法是同步的,而 hashmap 的方法不是同步的,我已经告诉他了
为了体验我实现了以下内容。并且代码从未崩溃?我不使用哈希表,但它仍然是 A 中的哈希图:)
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();
}
}
Run Code Online (Sandbox Code Playgroud)
嗯,仅仅因为它是单核,并不意味着你不能有竞争条件。这可能(可能?)意味着您不会遇到内存可见性问题,但您当然可以在单个核心上运行多个线程,并且仍然可以对它们进行调度,以便您获得竞争条件。
归档时间: |
|
查看次数: |
2815 次 |
最近记录: |