陈树义的博客

分享我的所思所想

并发集合源码系列(九):并发集合总结

让我们用过思维导图总结一下 JDK 中所有的并发集合。在 JDK 的并发集合包中,一共有如下 7 个类:ConcurrentHashMap:高并发的HashMapConcurrentSkipListMap:高并发下的TreeMap(基于跳表实现)ConcurrentSkipListSet:内部使用C

并发集合源码系列(八):ConcurrentLinkedDeque

在开始讲ConcurrentLinkedDeque之前,我们先来了解下Deque这种数据结构,我们知道Queue是一种具有FIFO特点的数据结构,元素只能在队首进行“入队”操作,在队尾进行“出队”操作。Queue接口定义Queue的接口非常简单,一共只有三种类型的操作:入队、出队、读取。上述方法,可

并发集合源码系列(七):ConcurrentLinkedQueue

ConcurrentLinkedQueue是JDK1.5时随着J.U.C一起引入的一个支持并发环境的队列。从名字就可以看出来,ConcurrentLinkedQueue底层是基于链表实现的。Doug Lea在实现ConcurrentLinkedQueue时,并没有利用锁或底层同步原语,而是完全基于自

并发集合源码系列(六):CopyOnWriteArraySet

CopyOnWriteArraySet,是另一类适合并发环境的SET工具类,也是在JDK1.5时,随着J.U.C包一起引入的。我们之前已经介绍过了ConcurrentSkipListSet,ConcurrentSkipListSet底层基于Skip List(跳表)实现,其操作平均时间复杂度均为O(

并发集合源码系列(五):CopyOnWriteArrayList

ArrayList是一种“列表”数据机构,其底层是通过数组来实现元素的随机访问。JDK1.5之前,如果想要在并发环境下使用“列表”,一般有以下3种方式:使用Vector类使用Collections.synchronizedList返回一个同步代理类;自己实现ArrayList的子类,并进行同步/加锁

并发集合源码系列(四):ConcurrentSkipListSet

ConcurrentSkipListSet,是JDK1.6时J.U.C新增的一个集合工具类,顾名思义,它是一种SET类型。SET类型,在数学上称为“集合”,具有互异性、无序性的特点,也就是说SET中的任意两个元素均不相同(即不包含重复元素),且元素是无序的。是不是感觉和HashMap有点类似?Has

并发集合源码系列(三):ConcurrentSkipListMap

通过上一篇文章——ConcurrentHashMap原理(1),相信读者对ConcurrentHashMap的基本原理有了一个初步认识,但是上一篇中还有一个遗留问题没有讨论到,那就是ConcurrentHashMap的扩容和数据迁移。本文中,我们将会对这两个问题进行讨论。扩容思路JDK1.8中,Co

并发集合源码系列(二):ConcurrentHashMap 扩容

通过上一篇文章——ConcurrentHashMap原理(1),相信读者对ConcurrentHashMap的基本原理有了一个初步认识,但是上一篇中还有一个遗留问题没有讨论到,那就是ConcurrentHashMap的扩容和数据迁移。本文中,我们将会对这两个问题进行讨论。扩容思路JDK1.8中,Co

并发集合源码系列(一):ConcurrentHashMap基础

ConcurrentHashMap是在JDK1.5时,J.U.C引入的一个同步集合工具类,顾名思义,这是一个线程安全的HashMap。不同版本的ConcurrentHashMap,内部实现机制千差万别,本节所有的讨论基于JDK1.8。ConcurrentHashMap的类继承关系并不复杂:可以看到C

并发包源码系列(十三):总结

总的来说,并发源码可以总结成下面这张思维导图:关于并发源码解析,可以参考两个系列的文章:Ressmix的并发系列明哥并发系列