【发布时间】:2013-02-25 02:15:25
【问题描述】:
我在 Java 中有一个生产者-消费者模型,其中包含多个消费者。我在生产者和消费者之间传递一个具有变量的对象,我们称之为“名称”。
现在,此名称可以是 A、B 或 C。如果值为 A,则一个消费者会将其从队列中取出并对其进行处理。如果值为 B,则不同的消费者会将其从同一个队列中取出并执行其他操作。如果值为 C,第三个消费者也会这样做。
我的问题是如何实现这一点。我目前的理论如下(伪代码):
// This is code for each consumer
pull item off the queue
check if item.name is right for this consumer (A, B, or C)
if so, send it to consume()
else, put it back on the queue
这样的事情会起作用吗,还是会对我的线程同步造成严重破坏?如果它不起作用,我应该使用什么模型来实现它?
【问题讨论】:
-
我看不出这里有多个消费者的原因。既然只有三种情况,为什么不让一个普通消费者处理呢?
-
听起来你真的需要消息驱动的 bean 和主题。
-
您是从头开始编写所有内容吗?使用 JMS API 怎么样?
-
@Sebastian 任务要求多个消费者。
-
@duffymo 你能解释一下吗?