【面试普通人VS高手系列】什么叫做阻塞队列的有界和无界
昨天一个3年Java经验的小伙伴私信我,他说现在面试怎么这么难啊!
我只是面试一个业务开发,他们竟然问我: 什么叫阻塞队列的有界和无界。现在面试也太卷了吧!
如果你也遇到过类似问题,那我们来看看普通人和高手的回答吧!
普通人
有界队列就是说队列中的元素个数是有限制的,而无界对接表示队列中的元素个数没有限制! 嗯!!!
高手
阻塞队列,是一种特殊的队列,它在普通队列的基础上提供了两个附加功能

- 当队列为空的时候,获取队列中元素的消费者线程会被阻塞,同时唤醒生产者线程。
- 当队列满了的时候,向队列中添加元素的生产者线程被阻塞,同时唤醒消费者线程。
其中,阻塞队列中能够容纳的元素个数,通常情况下是有界的,比如我们实例化一个
ArrayBlockingList,可以在构造方法中传入一个整形的数字,表示这个基于数组的阻塞队列中能够容纳的元素个数。这种就是有界队列。而无界队列,就是没有设置固定大小的队列,不过它并不是像我们理解的那种元素没有任何限制,而是它的元素存储量很大,像LinkedBlockingQueue,它的默认队列长度是Integer.Max_Value,所以我们感知不到它的长度限制。
无界队列存在比较大的潜在风险,如果在并发量较大的情况下,线程池中可以几乎无限制的添加任务,容易导致内存溢出的问题!
以上就是我对这个问题的理解!
总结
阻塞队列在生产者消费者模型的场景中使用频率比较高,比较典型的就是在线程池中,通过阻塞队列来实现线程任务的生产和消费功能。
基于阻塞队列实现的生产者消费者模型比较适合用在异步化性能提升的场景,以及做并发流量缓冲类的场景中!
在很多开源中间件中都可以看到这种模型的使用,比如在Zookeeper源码中就大量用到了阻塞队列实现的生产者消费者模型。
OK,本期的普通人VS高手面试系列就到这里结束了,喜欢的朋友记得点赞收藏,需要面试资料或者面试问题咨询可以私信或评论区下方留言。
我是Mic,一个工作了14年的Java程序员,咱们下期再见。

【面试普通人VS高手系列】什么叫做阻塞队列的有界和无界的更多相关文章
- 【面试普通人VS高手系列】死锁的发生原因和怎么避免
一个去阿里面试的小伙伴私信我说:今天被一个死锁的问题难到了. 平常我都特意看了死锁这块的内容,但是回答的时候就想不起来. 这里可能存在一个误区,认为技术是要靠记的. 大家可以想想,平时写代码的时候,这 ...
- 【面试普通人VS高手系列】请说一下你对分布式锁的理解,以及分布式锁的实现
一个工作了7年的Java程序员,私信我关于分布式锁的问题. 一上来就两个灵魂拷问: Redis锁超时怎么办? Redis主从切换导致锁失效怎么办? 我说,别着急,这些都是小问题. 那么,关于" ...
- 【面试普通人VS高手系列】讲一下wait和notify这个为什么要在synchronized代码块中?
一个工作七年的小伙伴,竟然不知道"wait"和"notify"为什么要在Synchronized代码块里面. 好吧,如果屏幕前的你也不知道,请在评论区打上&qu ...
- 【面试普通人VS高手系列】谈谈你对AQS的理解
AQS是AbstractQueuedSynchronizer的简称,是并发编程中比较核心的组件. 在很多大厂的面试中,面试官对于并发编程的考核要求相对较高,简单来说,如果你不懂并发编程,那么你很难通过 ...
- 【面试普通人VS高手系列】Fail-safe机制与Fail-fast机制分别有什么作用
前段时间一个小伙伴去面试,遇到这样一个问题. "Fail-safe机制与Fail-fast机制分别有什么作用" 他说他听到这个问题的时候,脑子里满脸问号.那么今天我们来看一下,关于 ...
- 【面试普通人VS高手系列】谈谈你对Seata的理解
很多面试官都喜欢问一些"谈谈你对xxx技术的理解". 大家遇到这种问题时,是不是完全不知道从何说起. 那么我们来看一下,普通人和高手是如何回答这个问题的? 普通人: Seata是用 ...
- 【面试普通人VS高手系列】Spring Boot的约定优于配置,你的理解是什么?
对于Spring Boot约定优于配置这个问题,看看普通人和高手是如何回答的? 普通人的回答: 嗯, 在Spring Boot里面,通过约定优于配置这个思想,可以让我们少写很多的配置, 然后就只需要关 ...
- 【面试普通人VS高手系列】HashMap是怎么解决哈希冲突的?
常用数据结构基本上是面试必问的问题,比如HashMap.LinkList.ConcurrentHashMap等. 关于HashMap,有个学员私信了我一个面试题说: "HashMap是怎么解 ...
- 【面试普通人VS高手系列】Dubbo的服务请求失败怎么处理?
今天分享的面试题,几乎是90%以上的互联网公司都会问到的问题. "Dubbo的服务请求失败怎么处理"? 对于这个问题,我们来看一下普通人和高手的回答. 普通人: 嗯- 我记得, D ...
随机推荐
- 三面面试官:运行 npm run xxx 的时候发生了什么?
事情是这样的,直接开讲 面试官:npm run xxx的时候,发生了什么?讲的越详细越好. 我(心想,简单啊): 首先,DNS 解析,将域名解析成 IP 地址,然后 TCP 连接,TCP 三次握手.. ...
- JDK8新特性关于Stream流
在Java1.8之前还没有stream流式算法的时候,我们要是在一个放有多个User对象的list集合中,将每个User对象的主键ID取出,组合成一个新的集合,首先想到的肯定是遍历,如下: 1 2 3 ...
- java常见面试问题总结
JDK1.7 并发的HashMap为什么会引起死循环? hashmap如何解决hash冲突,为什么hashmap中的链表需要转成红黑树? hashmap什么时候会触发扩容? jdk1.8之前并发操作h ...
- Java 中怎么创建 ByteBuffer?
byte[] bytes = new byte[10]; ByteBuffer buf = ByteBuffer.wrap(bytes);
- JAVA DAEMON线程的理解
java线程分两种:用户线程和daemon线程.daemon线程或进程就是守护线程或者进程,但是java中所说的daemon线程和linux中的daemon是有一点区别的. linux中的daemon ...
- 利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进 程的信息?
ps -ef (system v 输出) ps -aux bsd 格式输出 ps -ef | grep pid
- 什么是 Spring 配置文件?
Spring 配置文件是 XML 文件.该文件主要包含类信息.它描述了这些类是如何 配置以及相互引入的.但是,XML 配置文件冗长且更加干净.如果没有正确规划 和编写,那么在大项目中管理变得非常困难.
- 1.时任务XXL_Job框架踩过的坑
遇到的问题 问题1:执行器地址为空 原因-->执行器中 没有地址 解决方案-->输入地址:http://IP地址:端口 IP地址 端口 问题2:异常信息unknown code for r ...
- 检查浏览器支持Webp
什么是Webp? Webp 是一种支持有损压缩和无损压缩的图片文件格式,派生自图像编码格式 VP8.根据 Google 的测试,无损压缩后的 WebP 比 PNG 文件少了 45% 的文件大小,即使这 ...
- HTML 初学整理
一.HTML简介 HTML的概念 HTML是HyperText Markup Language(超文本标记语言)的简写,超文本标记语言,标准通用标记语言下的一个应用."超文本"就是 ...