zoukankan      html  css  js  c++  java
  • 面试题:LinkedTransferQueue和SynchronousQueue有什么区别

    SynchronousQueue VS LinkedTransferQueue

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

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

  • 相关阅读:
    sge的简单的应用
    dcoker 小应用(二)
    浅谈Docker(二)
    查看Linux版本
    dcoker 小应用(一)
    linux 强制重启!
    浅谈Docker(一)
    ubuntu command
    简析hotjar录屏功能实现原理
    实现node端渲染图表的简单方案
  • 原文地址:https://www.cnblogs.com/dalianpai/p/14281579.html
Copyright © 2011-2022 走看看