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

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。

以上是关于并发库应用之十二 & 同步集合类的应用的主要内容,如果未能解决你的问题,请参考以下文章

[Java 并发编程实战] 集合框架之 同步容器类 & 并发容器类

Java多线程同步集合--并发库高级应用

Java多线程与并发库高级应用-同步集合

并发库应用之十 & 多线程数据交换Exchanger应用

并发库应用之四 & 线程锁Lock应用

聊聊高并发(三十二)实现一个基于链表的无锁Set集合