并发库应用之十二 & 同步集合类的应用
Posted 星火燎原智勇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并发库应用之十二 & 同步集合类的应用相关的知识,希望对你有一定的参考价值。
传统集合实现同步的问题
举了一个例子: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。
以上是关于并发库应用之十二 & 同步集合类的应用的主要内容,如果未能解决你的问题,请参考以下文章