并发编程复习(七):并发类容器ConcurrentHashMap&CopyOnWrite

这里就不上代码了,因为它对应的就是HashTable,只不过在上面做了很大优化,即支持相对较高的并发。

ConcurrentHashMap在JDK1.5之后出现,底层原理:

内部将存储的数据分为了16个段,一个线程访问一个段中的数据的时候,会将这个段上锁,即加上synchronized同步,其他线程同时访问时会等其他线程释放锁后进行操作。是不是感觉没啥不一样的?但是,注意,是16个段,也就是不同段是能够并发操作的。这就是底层设计原理。

除此之外,还有一个类就是ConcurrentSkipListMap:

该类其实是对TreeMap的优化,其实就是比ConcurrentHashMap多了一个功能,排序。用到的时候在研究。

CopyOnWrite简称COW同样在JDK1.5之后:

JDK里的COW容器有两种:CopyOnWriteArrayList和CopyOnWriteArraySet.

该类其实用了一种思想,即读写分离,在每次修改元素的时候,不直接往当前容器中添加,而是在此容器的基础之上复制出一个相同的容器,往新的容器当中进行修改操作,操作完毕在将原来容器的引用指向新的容器,这样做的好处就是我们可以对容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以说它是读写分离思想,读和写是不同的容器。

要知道,多个线程并发修改的时候,其实是加锁的,所以此类应用场景其实是读多写少的情景。

我就不在这里研究源代码了,暂时没有达到那个境界,仅在此做个记录!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值