【发布时间】:2012-11-12 07:56:34
【问题描述】:
有谁知道是否有可靠的方法来设置生产者消费者类型队列,其中包含以下内容:
1) Producer 最初将三个对象放入队列
2) 消费者消费一个项目,在队列中留下两个对象
3) 控制权传回 Producer,Producer 再放一个项目 - (现在又是 3 个对象在队列中)
4) 消费者又消费了一件商品,因此循环继续
请注意,我需要手动设置解决方案,而无需使用任何界面来完成我正在处理的任务。任何建议将不胜感激。
线程可以进行这种微调吗?
【问题讨论】:
-
在某种程度上,你在谈论信号量。
-
Java ..抱歉,我应该提到这一点。
-
如果我理解正确:您希望
Consumer始终等到队列已满? -
参见 ArrayBlockingQueue。查看源代码,您可以对其进行修改以满足您的确切需求。
-
@bosra 好吧,这是线程,没有好的做法。你所描述的听起来是可行的。只需确保在检查队列是否已满和产生消费者之间没有竞争条件。在您知道只有生成的消费者将访问队列的人为情况下,这应该是安全的。 (这种情况听起来不太实际,因为要优雅地关闭多线程系统,您通常希望清空此类队列。)
标签: java multithreading thread-safety