关注
如图1所示,按不同分类方式可以进行基本的3种分类方式。
(1)如果一个队列已满,此时要插入元素 OR 一个队列已空,此时要提取元素
出现如上情况时,如果阻塞称为阻塞队列(名字中含有Blocking Queue字样,例如ArrayBQ、LinkedBQ、PriorityBQ等,如图2所示),在出现上面情况时会暂时阻塞,直到队列元素不满时再插入(或队列元素不空时再提取);若不阻塞称为非阻塞队列,遇到上面情况时会直接报错;
(2)有界队列和无界队列很好理解,也即是否设置了固定大小。当然实际上无界队列默认最大长度为Integer.MAX_VALUE
(3)按功能分类:
(3-1)普通队列(基本先入先出队列,可用固定长度数组或链表实现)
(3-2)双端队列(可以在头部和尾部同时入队或出队)
(3-3)优先队列(二叉堆实现,优先级高的元素先出队)
(3-4)延迟队列(基于优先队列实现,入队的元素需入队一定时间才能出队,如图3所示)
(3-5)特殊队列(例如SynchronousQueue,每次添加数据后必须等待另一个线程拿走数据之后,才可以继续添加数据)
查看原帖
点赞 评论
相关推荐
02-03 09:05
桂林电子科技大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我的2024牛客高光时刻 #
104083次浏览 1555人参与
# 大家实习每天都在干啥 #
52923次浏览 370人参与
# 被同事甩锅了怎么办 #
16662次浏览 91人参与
# 远程面试的尴尬瞬间 #
40731次浏览 419人参与
# 参加完秋招的机械人,还参加春招吗? #
25531次浏览 262人参与
# 过年最难忘的一件事 #
3468次浏览 81人参与
# 晒出你年味最浓的照片 #
2214次浏览 62人参与
# 国央企笔面经互助 #
103478次浏览 960人参与
# 过年期间的尴尬瞬间 #
7714次浏览 93人参与
# 在牛客分享我的求职旅程 #
115832次浏览 2228人参与
# 牛友们,签完三方你在忙什么? #
81556次浏览 761人参与
# 入职第二天,午饭怎么解决 #
18730次浏览 65人参与
# 通信和硬件还有转码的必要吗 #
42879次浏览 459人参与
# 入职第四天,心情怎么样 #
9429次浏览 46人参与
# 入职第一天,你准备什么时候下班 #
27099次浏览 182人参与
# 入职第五天,你被拉进了几个工作群 #
9788次浏览 58人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
19352次浏览 406人参与
# 如果再来一次,你还会学硬件吗 #
100061次浏览 1208人参与
# 如果重来一次你还会读研吗 #
152417次浏览 1684人参与
# 工作压力大怎么缓解 #
53194次浏览 831人参与