gpt4 book ai didi

java - 实现只有一个消费者和一个生产者的并发队列的绝对最快的方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:22:51 27 4
gpt4 key购买 nike

java.util.concurrent.ConcurrentLinkedQueue 浮现在脑海中,但它真的适合这种双线程场景吗?我正在寻找双方(生产者和消费者)可能的最小延迟。如果队列为空,您可以立即返回 null,如果队列已满,您可以立即丢弃您提供的条目。

ConcurrentLinkedQueue 是否使用超快速和轻型锁(AtomicBoolean)?有没有人对 ConcurrentLinkedQueue 进行基准测试或知道这样做的最终最快方法?

其他细节:我想队列应该是公平的,这意味着消费者不应该让消费者等待超过它需要的时间(通过前端运行),反之亦然。

最佳答案

对于我所知道的 Java 中最低的延迟,您可以使用 LMAX 开发的 Disruptor 模式。

基本上,他们正在减少所有延迟,这意味着许多相当独特的解决方案可以解决既定问题。例如,他们尽可能多地预分配并重用对象(以防止垃圾收集增加额外的延迟)。

他们的解决方案基于内存屏障,它可以防止跨特定检查点的代码形式的乱序执行。通过这样做,他们可以确保一个生产者线程和多个消费者线程之间的正确同步。

Here is a whitepaper describing the problem and LMAX's solution , and a recent youtube video解释解决方案的基本原理和设计细节。它需要大量的代码重组才能使用,但它是目前最快、延迟最低的东西。

关于java - 实现只有一个消费者和一个生产者的并发队列的绝对最快的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10020101/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com