【发布时间】:2016-07-23 08:29:43
【问题描述】:
我了解了 hashMap 以及它与 hashtable 的不同之处。就像在哈希表中一样,完整的对象被锁定,而在并发哈希映射的情况下,只有一部分被锁定。我的问题是,当两个线程同时尝试访问与键对应的相同值时会发生什么。
让我们说
Map mp = new ConcurrentHashMap();
mp.put(1, "Hello");
线程 1:尝试读取 mp.get(1)。
线程 2:尝试写入/修改 mp.put(1, "Hi")。
那么线程 1 读取什么值?
编辑:我的意思是 ConcurrentHashMap。
【问题讨论】:
-
Hello 或 Hi,取决于操作的顺序(假设映射是 ConcurrentHashMap,而不是 HashMap)。
-
您是在询问同时使用的
java.util.HashMap,还是java.util.concurrent.ConcurrentHashMap? -
对不起,我的意思是 concurrentHashMap
标签: java multithreading hashmap concurrenthashmap