【问题标题】:Read a java "Queue" from multiple theads with all objects in each thread从多个线程中读取一个java“队列”,每个线程中的所有对象
【发布时间】:2019-01-30 12:19:16
【问题描述】:

是否有 java.util.Queue 的标准或第三方实现,它允许我在多个线程中同时读取队列,但将所有对象传递给所有线程。

目标是对定期添加到队列中的消息进行多次并行处理。一些进程很快,而另一些进程很慢。我们需要所有消息都被所有线程处理。

【问题讨论】:

  • 如果所有对象都在每个线程中,是不是每个线程都有自己的队列,并且在添加项时,将其添加到所有线程的队列中?
  • 这将复制存储。想知道是否存在使用单个后备存储但为每个线程维护单独指针的实现
  • 它不会复制存储,因为每个队列都在查看同一个对象。
  • ConcurrentLinkedQueue?
  • 是的,史蒂夫明白。但它仍然重复所有这些参考。加上它在添加过程中的开销。近 50 个线程处理数万个对象。并且 ConcurrentLinkedQueue 不提供每个线程的独立视图

标签: java multithreading queue


【解决方案1】:

此任务在支持Reactive Streams 倡议的库中解决,例如Project ReactorRxJava。据我所知,它们只支持异步生产者和消费者,不支持线程。但我相信创建从异步(非阻塞)到同步(阻塞)通信方式的适配器很容易。在您的情况下,异步解决方案可能更好。

【讨论】:

    猜你喜欢
    • 2015-11-02
    • 2014-12-10
    • 2014-06-28
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 2011-04-01
    相关资源
    最近更新 更多