ConcurrentLinkedQueue原理探究
线程安全的*非阻塞队列,底层数据结构使用单向链表,入队和出队使用CAS来实现线程安全
通过UNSafe工具类提供的CAS算法来控制某时只有一个线程可以追加元素到队列末尾,
LinkedBlockingQueue原理探究
单向链表,使用头尾节点来进行入队和出队操作,入队操作尾节点,出队操作头节点
ArrayBlockingQueue原理探究
底层是有界数组,使用全局独占锁实现了只能有一个线程进行入队或者出队操作
PriorityBlockingQueue原理探究
带有优先级的*阻塞队列,每次出队都返回优先级最高或者最低的元素,内部是平衡二叉树堆
使用数组作为元素存储的数据结构,这个数组是可通过CAS算法扩容的,
出队保证元素是堆树的根节点
使用一个独占锁来控制只有一个线程进行入队和出队操作
DelayQueue原理探究
*阻塞延迟队列,每个元素都有过期时间,当从队列获取元素时,只有过期元素才会出队列。队列头元素是最快要过期的元素
内部使用PriorityQueue存放数据,使用ReentrantLock实现线程同步