java并发包-concurrentMap和CopyOnWriteArrayList

1concurrentHashMap

线程安全版本的hahsmap。大家都知道HashMap的实现是数组链的形式,而concurrentHashMap相当于对HashMap的每个数组进行加锁,这样使得线程安全

2CopyOnWriteArrayList

2.1 线程安全版本的ArrayList

2.2 CopyOnWrite写的时候复制。当我们向一个容器中添加元素时,不是直接添加,而是将当前容器Copy出来,然后在新容器里面添加,添加完成之后,将原容器的引用指向新容器。可以实现并发的读。

2.3 实现原理

写的时候加锁,读的时候不加锁。

2.4 相对于ArrayList线程安全相对于Vector不会出现迭代器异常,提高了效率

1、迭代器异常:

java中,集合在遍历的时候,如果内部被修改了会抛出java.util.ConcurrentModificationException异常。listvector都会抛出

2、快速失败:(fail-fast)

快速失败指迭代vector的时候不允许其他线程修改,不然就不准确了,抛出java.util.ConcurrentModificationException异常。

通俗解释:就好像有一盘饺子,你要数数有几个,在你还没数完,其他人有放入(或拿走)了几个饺子。 
你就只能重新再数了。本来你数数就很快,但是,就有人比你手更快。

3、提高读的效率:

因为读操作没有加锁,所以效率很高。

所以此方法适用于读多写少修改少的应用场景。

本文适用于对基础概念研读过复习使用,如果很多基础概念都清楚看这些的话可能会云里雾里。

参考链接:https://blog.csdn.net/soundslow/article/details/52198722

原文地址:https://www.cnblogs.com/Ugly-bear/p/8692419.html