-6

是否可以将 HashMap 更改为同步。如果是这样,请告诉我如何更改它。

4

4 回答 4

3

对于同步 HashMap,您可以使用

Collections.synchronizedMap(<your hashmap reference>) 

这将为您返回一个同步的地图,这是线程安全的。

于 2012-12-02T12:44:44.913 回答
2

ConcurrentHashMap是同步的实现之一。

根据javadoc

支持检索的完全并发和可调整的预期更新并发的哈希表。此类遵循与 Hashtable 相同的功能规范,并包含与 Hashtable 的每个方法对应的方法版本。但是,即使所有操作都是线程安全的,检索操作也不需要锁定,并且不支持以阻止所有访问的方式锁定整个表。在依赖线程安全但不依赖同步细节的程序中,此类与 Hashtable 完全可互操作

于 2012-12-02T12:41:54.593 回答
1

采用Collections.synchronizedMap(new HashMap());

于 2012-12-02T12:42:32.523 回答
1
Collections.synchronizedMap(map);

返回由指定映射支持的同步(线程安全)映射。为了保证串行访问,对支持映射的所有访问都是通过返回的映射完成的,这一点至关重要。

文档:http ://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#synchronizedMap%28java.util.Map%29

于 2012-12-02T12:43:23.980 回答