队列(Queue):与栈相对的一种数据结构, 集合(Collection)的一个子类。队列允许在一端进行插入操作,而在另一端进行删除操作的线性表,栈的特点是后进先出,而队列的特点是先进先出。队列的用处很大,比如实现消息队列。
Queue 类关系图,如下图所示:

注:为了让读者更直观地理解,上图为精简版的 Queue 类关系图。本文如无特殊说明,内容都是基于 Java 1.8 版本。
队列(Queue)
1)Queue 分类
从上图可以看出 Queue 大体可分为以下三类。
-
双端队列:双端队列(Deque)是 Queue 的子类也是 Queue 的补充类,头部和尾部都支持元素插入和获取。
-
阻塞队列:阻塞队列指的是在元素操作时(添加或删除),如果没有成功,会阻塞等待执行。例如,当添加元素时,如果队列元素已满,队列会阻塞等待直到有空位时再插入。
-
非阻塞队列:非阻塞队列和阻塞队列相反,会直接返回操作的结果,而非阻塞等待。双端队列也属于非阻塞队列。
2)Queue 方法说明
Queue 常用方法,如下图所示:
这篇博客详细介绍了Java中的队列数据结构,包括队列的特性、分类如双端队列、阻塞队列和非阻塞队列,以及它们的常用方法。特别强调了阻塞队列的实现,如BlockingQueue的几种实现,如LinkedBlockingQueue和ArrayBlockingQueue,并提供了相关实例。同时,还讨论了非阻塞队列ConcurrentLinkedQueue和优先级队列PriorityQueue的使用。博客最后给出了相关的面试题及答案,帮助读者巩固理解。
订阅专栏 解锁全文
1299

被折叠的 条评论
为什么被折叠?



