【发布时间】:2010-11-21 01:30:32
【问题描述】:
来自 JavaDocs:
- ConcurrentLinkedQueue 是当许多线程将共享对公共集合的访问时的合适选择。此队列不允许空元素。
- ArrayBlockingQueue 是一个经典的“有界缓冲区”,其中一个固定大小的数组保存由生产者插入并由消费者提取的元素。此类支持对等待的生产者和消费者线程进行排序的可选公平策略
- LinkedBlockingQueue 通常具有比基于数组的队列更高的吞吐量,但在大多数并发应用程序中的可预测性能较差。
我有 2 个场景,一个需要队列支持多个生产者(使用它的线程)和一个消费者,另一个则相反。
我不明白要使用哪个实现。有人能解释一下有什么区别吗?
另外,ArrayBlockingQueue 中的“可选公平政策”是什么?
【问题讨论】:
-
您也忘了询问 PriorityBlockingQueue,这对于指定线程处理的顺序很有用。
标签: java multithreading concurrency queue