码迷,mamicode.com
首页 > 其他好文 > 详细

并发库应用之十二 & 同步集合类的应用

时间:2017-03-10 10:39:52      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:ati   ret   应用   amp   bsp   集合   代理   hashmap   源代码   

传统集合实现同步的问题

       举了一个例子:Map集合线程不同步导致的问题。

       解决办法:使用同步的Map集合     使用集合工具类中的方法将不同步的集合转为同步的Collections.synchronizedMap(newMap())这个方法返回一个同步的集合

       publicstatic <K, V> Map<K, V> synchronizedMap(Map<K, V> m)

{return newSynchronizedMap<K, V>(m);}

SynchronizedMap类相当于一个代理类,通过查看源代码发现:该类中的所有方法都是直接返回:原Map集合方法调用后的结果,只是将返回结果的代码放在了同步代码块中以实现同步,构造是将同步锁默认置为当前对象。

HashSet与HashMap的关系与区别:

       HashSet是单列的,HashMap是双列的(键值对)

       关系:HashSet内部使用的是HashMap中的键,不考虑值。

查看HashSet的源代码发现其内部就是用HashMap实现的,只是没有使用HashMap的V,只使用了它的K。

并发库应用之十二 & 同步集合类的应用

标签:ati   ret   应用   amp   bsp   集合   代理   hashmap   源代码   

原文地址:http://www.cnblogs.com/liang1101/p/6529364.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!