ArrayBlockingQueue 和 ArrayDeque 之间的区别
javaobject oriented programmingprogramming
ArrayBlockingQueue 按 FIFO 顺序存储元素。元素的插入始终发生在队列的尾部,元素的移除始终发生在队列的头部。 它是线程安全的,并且是有界数组队列,因此一旦创建,容量就无法更改。它是阻塞队列的实现。
根据 Java 文档 −
Deque 接口的可调整大小数组实现。数组双端队列没有容量限制;它们会根据需要增长以支持使用。它们不是线程安全的;在没有外部同步的情况下,它们不支持多个线程的并发访问。禁止使用空元素。这个类在用作堆栈时可能比 Stack 更快,在用作队列时比 LinkedList 更快。
Sr.不。 | Key | ArrayBlockingQueue | ArrayDeque |
---|---|---|---|
1 | Basic | 实现了 BlockingQueue 接口 | 实现了 Deque 接口 |
2 | Bounded | 是有界数组队列。因此,一旦创建,容量就无法改变 | 它是 Deque 的可调整大小数组实现 |
3 | 线程安全 | 它是线程安全的 | 它不是线程安全的 |
4 | 插入/移除 | 元素的插入始终发生在队列的尾部,元素的移除始终发生在队列的头部 | 它支持在两端插入和移除元素 |