我应该在 Java 中使用哪个并发队列实现?
来自 JavaDocs:
- 当许多线程将共享对公共集合的访问权限时,ConcurrentLinkedQueue 是一个合适的选择。此队列不允许空元素。
- ArrayBlockingQueue是一个经典的“有界缓冲区”,其中固定大小的数组保存由生产者插入并由消费者提取的元素。此类支持用于对等待的生产者线程和使用者线程进行排序的可选公平性策略
- LinkedBlockingQueue 通常具有比基于阵列的队列更高的吞吐量,但在大多数并发应用程序中性能的可预测性较差。
我有2个场景,一个需要队列支持许多生产者(使用它的线程),一个是使用一个消费者,另一个是相反的方式。
我不知道要使用哪个实现。有人能解释一下它们有什么区别吗?
另外,什么是“可选公平政策”?ArrayBlockingQueue