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 也实际大小不符,使用时需要注意。 后++ 的问题 [面试题] HashMap中如何通过已知的value值获取相对应的key值 线程与继承问题? 学习java中遇到的若干问题解决后的疑惑?很重要也绝对对您有用噢!!! 大家帮我看看这个习题好吗? 使用itext的朋友,问两个问题? 可怜的布局?? 那里有最新的j2sdk下载呀!急急! to hexiaofeng() 求找出错误! 想考SCJP 淘宝卖的600块左右的考试券可信吗? 关于ProGuard使用的问题
类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode 方法和 equals 方法。
Collections.synchronizedMap(Map) 同步MAPConcurrentHashMap
ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。
jdk1.5引入了它。
ConcurrentHashMap如楼上所说,是通过散列segment的方式,将数据两次散列,并将同步锁两次分离。
达到数据冲突量变小,从而达到访问提速的效果。