【发布时间】:2012-11-20 02:21:43
【问题描述】:
是否可以将 HashMap 更改为同步。如果是这样,请告诉我如何更改它。
【问题讨论】:
标签: java concurrency synchronization hashmap hashtable
是否可以将 HashMap 更改为同步。如果是这样,请告诉我如何更改它。
【问题讨论】:
标签: java concurrency synchronization hashmap hashtable
ConcurrentHashMap 是同步实现之一。
根据javadoc
支持检索的完全并发和可调整的预期更新并发的哈希表。此类遵循与 Hashtable 相同的功能规范,并包含与 Hashtable 的每个方法对应的方法版本。但是,即使所有操作都是线程安全的,检索操作也不需要锁定,并且不支持以阻止所有访问的方式锁定整个表。在依赖线程安全但不依赖同步细节的程序中,此类与 Hashtable 完全可互操作
【讨论】:
使用Collections.synchronizedMap(new HashMap());
【讨论】:
Collections.synchronizedMap(map);
返回由指定映射支持的同步(线程安全)映射。为了保证串行访问,所有对 backing map 的访问都必须通过返回的 map 完成。
【讨论】:
为了同步一个HashMap,你可以使用
Collections.synchronizedMap(<your hashmap reference>)
这将为您返回一个同步的地图,这是线程安全的。
【讨论】: