BlockingQueue 阻塞队列
BlockingQueue阻塞队列
A Queue
that additionally supports operations that wait for the queue to become non-empty when retrieving an element, and wait for space to become available in the queue when storing an element.
就是一种队列但是又在插入和取数据的时候支持了额外的等待阻塞。
关于无界队列和有界队列
队列的底层结构无非就是Array
,或者是LinkedList
。一般来说Array
基本都是有界的,因为定义Array
是有大小的,但是Array
有的情况下会扩容。所以大小固定的Array
是有界的。同理LinkedList
也是只要初始化定义了一个大小,基本都可以认为是有界,当然如果大小是Integer.MaxValue
这种数量级,也可以认为是无界【毕竟实际很难达到这种边界】。
ArrayBlockingQueue
一种基于数组的有界阻塞队列
。支持FIFO
,默认不是公平队列
。
LinkedBlockingQueue
官方的介绍叫An optionally-bounded blocking queue based on linked nodes.
就是说有无边界是可以选的。
PriorityBlockingQueue
官方介绍An unbounded blocking queue that uses the same ordering rules as class PriorityQueue and supplies blocking retrieval operations
这个队列是base on Array的无界队列,因为它会自动扩容
。因为是Priority
,所以是优先级高的先出队。
DelayQueue
DelayQueue
也是一个优先队列,不过它的优先级是和expire
关联的,而且这个队列是基于数组的无界队列。而且进入队列的element
必须是实现Delayed
接口的。
SynchronousQueue
最难理解的就就是SynchronousQueue
,这个队列没有容量,所以每次入队必须匹配一次出队操作,否则就会阻塞;反之出队操作也必须匹配一个入队操作,否则也会阻塞。该队列使用CAS
保证并发,在有的线程池类型中就使用了这种特殊的阻塞队列。
Tag
queue
BlockingQueue
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥