其他分享
首页 > 其他分享> > 面试题:LinkedTransferQueue和SynchronousQueue有什么区别

面试题:LinkedTransferQueue和SynchronousQueue有什么区别

作者:互联网

SynchronousQueue VS LinkedTransferQueue

SynchronousQueue 是一个队列长度为 0 的 BlockingQueue,所以没有一个地方来暂存元素,导致每次取数据都要先阻塞,直到有数据被放入;同理,每次放数据的时候也会阻塞,直到有消费者来取。它所做的就是直接传递(direct handoff)。由于每当需要传递的时候,SynchronousQueue 会把元素直接从生产者传给消费者,在此期间并不需要做存储,所以如果运用得当,它的效率是很高的。

LinkedTransferQueue 是一种效率更高的公平队列,TransferQueue在BlockingQueue提供的方法基础上,增加了 transfer 方法,就是只有生产者的消息被消费之后,才返回,否则继续阻塞。主要是:通过 CAS 更新引用,避免使用锁,数据缓存行填充减少false sharing,优化双向同步队列数据结构,减少更新冲突

标签:面试题,SynchronousQueue,阻塞,队列,LinkedTransferQueue,数据,BlockingQueue
来源: https://www.cnblogs.com/dalianpai/p/14281579.html