java并发包-concurrentMap和CopyOnWriteArrayList
1、concurrentHashMap
线程安全版本的hahsmap。大家都知道HashMap的实现是数组链的形式,而concurrentHashMap相当于对HashMap的每个数组进行加锁,这样使得线程安全
2、CopyOnWriteArrayList
2.1 线程安全版本的ArrayList
2.2 CopyOnWrite写的时候复制。当我们向一个容器中添加元素时,不是直接添加,而是将当前容器Copy出来,然后在新容器里面添加,添加完成之后,将原容器的引用指向新容器。可以实现并发的读。
2.3 实现原理
写的时候加锁,读的时候不加锁。
2.4 相对于ArrayList线程安全相对于Vector不会出现迭代器异常,提高了效率
1、迭代器异常:
java中,集合在遍历的时候,如果内部被修改了会抛出java.util.ConcurrentModificationException异常。list和vector都会抛出
2、快速失败:(fail-fast)
快速失败指迭代vector的时候不允许其他线程修改,不然就不准确了,抛出java.util.ConcurrentModificationException异常。
通俗解释:就好像有一盘饺子,你要数数有几个,在你还没数完,其他人有放入(或拿走)了几个饺子。
你就只能重新再数了。本来你数数就很快,但是,就有人比你手更快。
3、提高读的效率:
因为读操作没有加锁,所以效率很高。
所以此方法适用于读多写少修改少的应用场景。
本文适用于对基础概念研读过复习使用,如果很多基础概念都清楚看这些的话可能会云里雾里。
参考链接:https://blog.csdn.net/soundslow/article/details/52198722