【发布时间】:2015-06-02 07:30:59
【问题描述】:
用例:
它是一种生产者消费者模式,需要维护订单(FIFO)。目前只有一个生产者和一个消费者来按顺序处理数据以维持秩序,但未来(由于消除了一些业务约束)这种维持秩序的需求将不再存在。届时,我们将能够创建多个生产者和消费者在同一个队列上工作。
我可以看到两种解决方案:
我可以使用在生产者和消费者之间实现数据管道 a) ArrayBlockingQueue b) 可以使用Exchangers,并使用两个ArrayLists作为底层数据结构
问题:
这两种实现在并发方面的相对优缺点是什么?
我的想法:
我认为 Exchangers 在并发方面会更好,因为线程在不同的 ArrayList 上进行读写,但缺点是生产者可能必须等到消费者的 arraylist 已满并且可以交换。
提前感谢您分享您的观点。
【问题讨论】:
标签: java concurrency producer-consumer