您的位置:首页 > 运维架构

Concurrent 与 CopyOnWrite 容器简单介绍

2017-10-07 17:51 239 查看

Concurrent与CopyOnWrite 容器

Concurrent与CopyOnWrite 容器
ConcurrentMap 两个重要实现
ConcurrentHashMap

ConcurrentSkipListMap支持并发排序

CopyOnWrite 两个重要实现
CopyOnWriteArrayList

CopyOnWriteArraySet

ConcurrentMap 两个重要实现

1 ConcurrentHashMap :

ConcurrentHashMap:

内部使用段(Segment)来表示这些的不同部分,每个段其实就是一个小的 HashTable, 他们都有自己的锁。只要修改操作发生在不同的段上,就可以并发的进行。

注意:

ConcurrentHashMap 把一个整体分成 16 段。也就是最高支持16个线程的并发操作。这也是在多线程场景时,减小锁的粒度,从而降低锁的竞争的一种解决方案。

2 ConcurrentSkipListMap(支持并发排序) :

CopyOnWrite 两个重要实现

CopyOnWrite 原理:

CopyOnWrite容器,即写时复制的容器。通俗的理解是当我们需要往容器里面添加一个元素的时候,我们不是直接向原来的容器添加,而是将原来的容器拷贝一份,然后再往新的容器里面添加, 添加完成以后,将原来容器的引用,指向新的容器。这样做的好处就是我们可以对CopyOnWrite容器进行并发的读。

注意:

1 CopyOnWrite容器 适用于读多写少的应用场景。

2 由于 读的时候使用了 ReentrantLock(重入锁) 所以多个线程同时写入的时候不会出现数据不一致的情况

1 CopyOnWriteArrayList :

2 CopyOnWriteArraySet :

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: