姬長信(Redy)

我应该在Java中使用哪个并发队列实现?


来自JavaDocs:

>当许多线程共享对公共集合的访问权时,A ConcurrentLinkedQueue是一个合适的选择.此队列不允许null元素.
> ArrayBlockingQueue是一个经典的“有界缓冲区”,其中固定大小的数组包含由生产者插入并由消费者提取的元素.此类支持用于排序等待生产者和消费者线程的可选公平策略
> LinkedBlockingQueue通常具有比基于阵列的队列更高的吞吐量,但在大多数并发应用程序中具有更低的可预测性能.

我有两个场景,一个需要队列支持许多生产者(使用它的线程)与一个消费者,另一个是另一种方式.

我不明白使用哪种实现.有人可以解释一下这些差异是什么吗?

此外,ArrayBlockingQueue中的“可选公平政策”是什么?