V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
amiwrong123
V2EX  ›  Java

LinkedTransferQueue 为什么不用 Condition 实现

  •  
  •   amiwrong123 · 2020-08-09 00:47:56 +08:00 · 1319 次点击
    这是一个创建于 1328 天前的主题,其中的信息可能已经有所发展或是发生改变。

    首先我觉得 LinkedTransferQueue 相比其他普通的无界队列,只是多了一个 可以阻塞的入队操作。其他没什么不同,都是符合 FIFO 的。

    LinkedTransferQueue 的实现也看了,大概就是 CAS + volatile + LockSupport. 不过我觉得,LinkedTransferQueue 也可以使用一个Lock+两个Condition来实现,一个用来阻塞生产者线程,一个用来阻塞消费者线程,通过hasWaiters判断是否有没有取消掉的节点,通过getWaitingThreads获得第一个等待的线程。

    虽然我上面这种想法是悲观锁了,或者 LinkedTransferQueue 就是想用乐观锁实现吗? LinkedTransferQueue 为什么不用 Condition 实现?

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5265 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:23 · PVG 17:23 · LAX 02:23 · JFK 05:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.