有什么用ConcurrentHashMap
在Java中?它有什么好处?它是如何工作的?
示例代码也很有用。
重点是提供一个实现HashMap
那是线程安全的。多个线程可以读取和写入它,而不会接收到过期或损坏的数据。ConcurrentHashMap
提供其自己的同步,因此您不必显式同步对其的访问。
另一个特点是ConcurrentHashMap
是它提供了putIfAbsent
方法,这将原子地如果指定的键不存在,则添加映射。考虑以下代码:
ConcurrentHashMap<String, Integer> myMap = new ConcurrentHashMap<String, Integer>();
// some stuff
if (!myMap.contains("key")) {
myMap.put("key", 3);
}
此代码不是线程安全的,因为另一个线程可以添加映射"key"
之间的调用contains
并致电put
。正确的实现是:
myMap.putIfAbsent("key", 3);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)