此文是目前本人对 LinkedBlockingDeque 的认识与理解,随着本人技术的成长,我不断完善对它的理解与使用。首先,从它的定义来看,
public class LinkedBlockingDeque<E>
extends AbstractQueue<E>
implements BlockingDeque<E>, java.io.Serializable
相关接口BlockingDeque 的声明,
public interface BlockingDeque<E> extends BlockingQueue<E>, Deque<E>
相关接口BlockingQueue 的声明,
public interface BlockingQueue<E> extends Queue<E>
相关接口Deque 的声明,
public interface Deque<E> extends Queue<E>
类型参数:
E
- 在此集合中含有的元素的类型
此类实现的所有接口:
Serializable, Iterable<E>, Collection<E>, BlockingDeque<E>, BlockingQueue<E>, Deque<E>, Queue<E>
下面就一步步了解LinkedBlockingDeque,
概括的说,它是,基于链接节点的可选有界阻塞双端队列。
线程安全性
java.util.concurrent.LinkedBlockingDeque
它是JUC下的类,线程安全。
容量限制
可选的容量绑定构造函数参数用作防止过度扩展的一种方式。如果不指定容量大小,则默认等于 Integer.MAX_VALUE。 在不超出容量的情况下,链接节点会在每次插入时被动态创建。
运行时间
如果忽略阻塞所花费的时间,大多数 LinkedBlockingDeque 的操作,运行在常数时间内。例外的情况,像这些操作 remove, removeFirstOccurrence, removeLastOccurrence, contains, iterator.remove() 及所有的批量操作,都运行在线性时间内,与元素的多少线性相关。
其他
此类及其迭代器实现了 Collection 和 Iterator 接口的所有可选方法。
此类也是 Java 集合框架 ( Java Collections Framework) 的一个成员。
最后,我们看一下此类的一个相关的应用: