陈树义的博客

分享我的所思所想

阻塞队列源码系列(六):DelayedWorkQueue

DelayedWorkQueue 是 ScheduledThreadPoolExecutor 中的内部类,它与 DelayQueue 一样继承了 AbstractQueue 接口,实现了 BlockingQueue 接口。static class DelayedWorkQueue extends A

阻塞队列源码系列(五):DelayQueue

DelayQueue 是 JDK 1.5 时,随着 J.U.C 包一起引入的一种阻塞队列,它实现了 BlockingQueue 接口,底层基于已有的 PriorityBlockingQueue 实现:DelayQueue 也是一种比较特殊的阻塞队列,从类声明也可以看出,DelayQueue 中的所有

阻塞队列源码系列(四):PriorityBlockingQueue

PriorityBlockingQueue,是在JDK1.5时,随着J.U.C包引入的一种阻塞队列,它实现了 BlockingQueue 接口,底层基于堆实现:特性PriorityBlockingQueue 是一种无界阻塞队列,在构造的时候可以指定队列的初始容量,也可以不指定其容量。当队列容量不够时

阻塞队列源码系列(三):LinkedBlockingDeque

LinkedBlockingDeque 是在JDK1.5时随着J.U.C包引入的,实现了 BlockingDueue 接口,底层基于双链表实现:可以看到 LinkedBlockingDeque 是直接实现了 BlockingDeque 接口,而不是 BlockingQueue 接口。从上面的继承结构

阻塞队列源码系列(二):LinkedBlockingQueue

LinkedBlockingQueue是在JDK1.5时,随着J.U.C包引入的一种阻塞队列,它实现了BlockingQueue接口,底层基于单链表实现:在深入了解其源码之前,我们先用一个例子看看 LinkedBlockingQueue 是怎么使用的。LinkedBlockingQueue link

阻塞队列源码系列(一):ArrayBlockingQueue

ArrayBlockingQueue 是在JDK1.5时,随着J.U.C包引入的一种阻塞队列,它实现了BlockingQueue接口,底层基于数组实现:在深入了解其源码之前,我们先用一个例子看看 ArrayBlockingQueue 是怎么使用的。ArrayBlockingQueue blockin

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

让我们用过思维导图总结一下 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(