阅读 JDK 源码:松弛队列 ConcurrentLinkedQueue

2021-03-29
阅读 11 分钟
2.4k
ConcurrentLinkedQueue 是一个由链表结构组成的无界非阻塞队列,是 JDK 中唯一一个并发安全的非阻塞队列,使用无锁算法来保证线程安全。为了减少 CAS 操作造成的资源争夺损耗,其链表结构被设计为“松弛”的(Slack)。本文对 ConcurrentLinkedQueue 的入队和出队过程进行图解,直观展示其内部结构。

阅读 JDK 源码:传递队列 SynchronousQueue

2021-03-29
阅读 18 分钟
2.1k
SynchronousQueue 是一个由链表或栈结构组成的阻塞队列,采用无锁算法,并发安全。每个线程的存入操作必须等待一个取出操作与之匹配(反之亦然),否则当前线程将阻塞在队列中等待匹配。适用于传递性场景,即生产者线程处理的数据直接传递给消费者线程。