第十一篇 队列的学习(三) 手写一个阻塞队列
【摘要】 前言
前面我们手写实现了一个单向队列,一个循环队列,今天我们再手写实现一个阻塞队列。顾名思义,阻塞队列就是在普通队列的基础上加了阻塞功能。本文是为了后面看ArrayBlockingQueue的源码做的前期准备。
阻塞队列
阻塞队列顾名思义就是一个具有阻塞功能的队列,当队满时,对这个队列的入队操作就要被阻塞,当队空时,对这个队列的出队操作就要被阻塞。那么阻塞队列是如...
前言
前面我们手写实现了一个单向队列,一个循环队列,今天我们再手写实现一个阻塞队列。顾名思义,阻塞队列就是在普通队列的基础上加了阻塞功能。本文是为了后面看ArrayBlockingQueue的源码做的前期准备。
阻塞队列
阻塞队列顾名思义就是一个具有阻塞功能的队列,当队满时,对这个队列的入队操作就要被阻塞,当队空时,对这个队列的出队操作就要被阻塞。那么阻塞队列是如何实现阻塞的呢?阻塞队列的底层的数据结构又是啥呢?带着这两个问题我们开始今天的手写阻塞队列之旅。
第一步:定义阻塞队列的数据结构
通过前面几篇的学习,我们知道了可以通过数组或者链表来实现阻塞队列,用数组来实现的队列,查找和插入的时间复杂度是O(1),存储比较高效。所以在此处,我们也将通过数组来实现队列。此处直接定义了一个Object数组。
/** * 存放数据的数组 */ private volatile Object[] items;
- 1
- 2
- 3
- 4
第二步:设计阻塞功能
阻塞队列里的阻塞功能,实际上就是采用生产者-消费者模型来实现的。首先我们在来回顾下生产者
文章来源: feige.blog.csdn.net,作者:码农飞哥,版权归原作者所有,如需转载,请联系作者。
原文链接:feige.blog.csdn.net/article/details/104208957
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)