3种同步Map的不同 我打算在多线程环境下面使用Map。谁能告诉我下面3种Map的不同?HashtableCollections.synchronizedMap(Map)ConcurrentHashMap 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Hashtable类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode 方法和 equals 方法。Collections.synchronizedMap(Map) 同步MAPConcurrentHashMapConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。 Hashedtable貌似就是在HashMap代码的基础上加了方法同步。Collections.synchronizedMap(Map)是对非同步map加同步,现在是推荐的使用方法,两者差别不大,Hashedtable和Vector貌似不太推荐使用了。Vector貌似是因为内存扩充的方式不太优化。Hashedtable不推荐使用的原因我现在也不是太了解。ConcurrentHashMap是concurrent包中的同步map的实现,concurrent本是一个优秀的同步工具类包。jdk1.5引入了它。ConcurrentHashMap如楼上所说,是通过散列segment的方式,将数据两次散列,并将同步锁两次分离。达到数据冲突量变小,从而达到访问提速的效果。 自己看API文档,上面解说的挺详细的,英文的看不懂的话,可以找份中文的! ConcurrentHashMap 虽然是一个并发容器,但是它的效率比非同步容器 HashMap 还要高。ConcurrentHashMap 并不是采用了一把锁,在默认情况下采用了 16 把锁,每把锁只锁住不同的部分,这种同步锁的技术称为“分离锁”,分离锁的应用能在高并发的情况下拥有非常良好的性能。多线程环境下,毋庸置疑应该选择 ConcurrentHashMap。但是这个并发容器的 size() 方法由于可以进行并发修改,因此并不能真实表示当前的容量,比如说在 size 返回时其他线程添加了一条数据,这就导致实际返回的 size 也实际大小不符,使用时需要注意。 java继承的问题, 请教一个正则表达式 对象与类对象的疑惑 File.separator的作用? 大家过年好,请教一个关于swing中tree的问题 !!!!关于在panel中加人canvas画布的问题!!!! 一个简单的java多线程问题 字符串按固定格式输出问题请教 怎样才能实现不停地点着按钮去做其他事情,而不用点一次做一次。 哪有java2 核心技术 高级特性下载? 想考SCJP 淘宝卖的600块左右的考试券可信吗? 关于ProGuard使用的问题
类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode 方法和 equals 方法。
Collections.synchronizedMap(Map) 同步MAPConcurrentHashMap
ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。
jdk1.5引入了它。
ConcurrentHashMap如楼上所说,是通过散列segment的方式,将数据两次散列,并将同步锁两次分离。
达到数据冲突量变小,从而达到访问提速的效果。