SynchronousQueue与TransferQueue之间的区别

fas*_*ser 9 java queue concurrency producer-consumer

这些实现之间有什么区别,哪些情况应该使用一个或另一个队列?

小智 7

正如Alex Miller这篇文章中提到的那样

TransferQueue比SynchronousQueue更通用和有用,但它允许您灵活地决定是使用正常的BlockingQueue语义还是保证切换.在项目已经在队列中的情况下,呼叫转移将保证在转移的项目之前处理所有现有的队列项目.

SynchronousQueue实现使用双队列(用于等待生成器和等待使用者)并使用单个锁保护两个队列.LinkedTransferQueue实现使用CAS操作来形成非阻塞实现,这是避免序列化瓶颈的核心.

  • 当内容不是由您创建时,不要忘记引用原作者,否则视为抄袭 (3认同)