SynchronousQueue 容量

SynchronousQueue容量为0,

  • SynchronousQueue 最大的特点在于,它的容量为0,没有一个地方来暂存元素,导致每次取数据都要先阻塞,直到有数据被放入;同理,每次放数据的时候也会阻塞,直到有消费者来取。

  • SynchronousQueue 的容量不是 1 而是 0,因为 SynchronousQueue 不需要去持有元素,它所做的就是直接传递(direct handoff)。

  • 由于每当需要传递的时候,SynchronousQueue 会把元素直接从生产者传给消费者,在此期间并不需要做存储,所以如果运用得当,它的效率是很高的。

  • 使用的数据结构是链表。

  • 使用CAS+自旋(无锁),自旋了一定次数后调用 LockSupport.park()进行阻塞。

posted @ 2022-09-29 16:20  八英里  阅读(70)  评论(0编辑  收藏  举报