首页 > 解决方案 > Java中的多个生产者和多个带有单个队列的Java?

问题描述

我有三个生产者 P1、P2、P3 和三个具有单个共享队列的消费者。生产者 P1 将 X1、X2、X3 放入/插入队列,它应该只被消费者 C1 消费,而不是其他消费者(C2,C3)。基本上,消费者 C1 应该只使用生产者 P1 插入的值。同样的规则也适用于其他消费者。C2-> P2 和 C3-> P3。如何在 Java 中解决这个问题。

标签: javamultithreadingqueuemessage-queueproducer-consumer

解决方案


这最终会起作用的方式是会有这样的课程

class Envelope<S, T, M> {
    final S sender;
    final T topic;
    final M message;
    ...
};

所有发送的消息都将被包装到其中(就像信封中的真实信件一样)并张贴到MailBox. 邮箱另一端的调度员将查看信封的主题/接收者字段,并应用所需的策略以在正确的上下文(线程)中传递给正确的收件人。

至于自己编码——我只是为了好玩。如果我需要一些快速的东西,我会选择Akka已经拥有所有必需的原语并使用它们。


推荐阅读