发布网友
共2个回答
热心网友
区别ConcurrentHashMap线程安全hashMap线程安全
线程安全呢:
ConcurrentHashMap代码看引入段锁概念具体理解Map拆NHashTable根据key.hashCode()决定key放哪HashTable
ConcurrentHashMapMapNSegmentputget候都现根据key.hashCode()算放哪Segment:
热心网友
类 HASHSET
所已实现接口:Serializable, Cloneable, Iterable, Collection, Set
类实现 Set 接口由哈希表(实际 HashMap 实例)支持保证 set 迭代顺序;特别保证该顺序搜索恒久变类允许使用 null 元素
类基本操作提供稳定性能些基本操作包括 add、remove、contains size假定哈希函数些元素确布桶 set 进行迭代所需间与 HashSet 实例(元素数量)底层 HashMap 实例(桶数量)容量比例迭代性能重要则要初始容量设置太高(或加载设置太低)
注意实现同步线程同访问哈希 set其至少线程修改该 set必须 保持外部同步通通自封装该 set 象执行同步操作完存象则应该使用 Collections.synchronizedSet 包装 set创建完操作防止该 set 进行意外同步访问:
Set s = Collections.synchronizedSet(new HashSet(...));
类 HASHMAP
所已实现接口:Serializable, Cloneable, Map
基于哈希表 Map 接口实现实现提供所选映射操作并允许使用 null 值 null 键(除非同步允许使用 null 外HashMap 类与 Hashtable 致相同)类保证映射顺序特别保证该顺序恒久变
类 CONCURRENTHASHMAP
所已实现接口:
Serializable, ConcurrentMap, Map
支持获取完全并发更新所期望调整并发哈希表类遵守与 Hashtable 相同功能规范并且包括应于 Hashtable 每版本尽管所操作都线程安全获取操作 必锁定并且 支持某种防止所访问式锁定整表类通程序完全与 Hashtable 进行互操作取决于其线程安全与其同步细节关