ArrayBlockingQueue和ArrayDeque的区别
ArrayBlockingQueue以FIFO(先进先出)的顺序存储元素。元素的插入始终发生在队列的尾部,元素的删除始终发生在队列的头部。它是线程安全的,并且是有界数组队列,因此一旦创建,容量就不能更改。它是阻塞队列的实现。
根据Java文档:
Deque接口的可调整大小的数组实现。ArrayDeque没有容量限制;它们根据需要增长以支持使用。它们不是线程安全的;在没有外部同步的情况下,它们不支持多个线程的并发访问。不允许使用空元素。当用作堆栈时,此类可能比Stack更快,当用作队列时,比LinkedList更快。
序号 | 关键点 | ArrayBlockingQueue | ArrayDeque |
---|---|---|---|
1 | 基础 | 它实现了BlockingQueue接口 | 它实现了Deque接口 |
2 | 有界性 | 它是具有边界限制的数组队列。因此,一旦创建,容量就不能更改。 | 它是Deque接口的可调整大小的数组实现 |
3 | 线程安全 | 它是线程安全的 | 它不是线程安全的 |
4 | 插入/删除 | 元素的插入始终发生在队列的尾部,元素的删除始终发生在队列的头部。 | 它支持在两端插入和删除元素 |
广告