首页 > 其他分享 >阻塞队列

阻塞队列

时间:2023-07-17 18:31:48浏览次数:32  
标签:队列 元素 阻塞 链表 线程 移除

阻塞队列是一个支持两个附加操作的队列,这两个附加操作支持阻塞的插入和移除操作。

1、支持阻塞的插入方法:当队列满时,队列对阻塞插入元素的线程,直到队列不满。

2、支持阻塞的移除方法:当队列为空,获取元素的线程会等待队列变味非空。

阻塞队列常用的应用场景

常用于生产者和消费者场景,生产者是往队列里添加元素的线程,消费者是从队列里取元素的线程。阻塞队列正好是生产者存放、消费者来获取的容器。

Java里的阻塞队列

ArrayBlockingQueue: 数组结构组成的 |有界阻塞队列

LinkedBlockingQueue: 链表结构组成的|有界阻塞队列

PriorityBlockingQueue: ⽀持优先级排序|⽆界阻塞队列

DelayQueue: 优先级队列实现|⽆界阻塞队列

SynchronousQueue: 不存储元素| 阻塞队列

LinkedTransferQueue: 链表结构组成|⽆界阻塞队列

LinkedBlockingDeque: 链表结构组成|双向阻塞队列

标签:队列,元素,阻塞,链表,线程,移除
From: https://blog.51cto.com/u_11315052/6754075

相关文章

  • 字符串,列表的内置方法(增加、修改、删除) 、可变类型与不可变类型 、字典 ,元组,集合的
    字符串的内置方法(较多,重要)old_code='KeViN'print('这是返回给用户的验证码:%s'%old_code)new_code=input('请输入你的验证码:').strip()print(new_code)#对验证码作一个判断,现在对验证码作不区分带小写#ifold_code.upper()==new_code.upper():ifold_code.......
  • 2023.7.16 linux 软中断Softirqs 队列 Workqueues 并发管理队列cmwq
    Implementingwork-deferringmechanisms 延期任务Softirqs:Executedinanatomiccontext # kernel/softirq.c ;<linux/interrupt.h>.Tasklets:Executedinanatomiccontext Workqueues:Executedinaprocesscontext structsoftirq......
  • 线性表——栈与队列
    栈栈(stack):先进后出,后进先出的数据结构。栈是限定仅在表尾进行插入和删除操作的线性表。我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(LastInFirstOut)的线性表,简称LIFO结构。需要注意,栈是一个线性表,也......
  • 消息队列基础
    消息队列本质是将同步处理转成异步处理消息队列的基本要求不丢消息高可用高性能消息队列名称RabbitMQRocketMQKafka优点轻量级低延迟和高稳定性1. 与周边生态系统的兼容性最好2. 基于异步批量设计的异步收发性能最好缺点1. 消息大量堆积......
  • 队列
    队列(Queue) 是 先进先出(FIFO,FirstIn,FirstOut) 的线性表对头出,队尾进   4.3.常见应用场景当我们需要按照一定顺序来处理数据的时候可以考虑使用队列这个数据结构。阻塞队列: 阻塞队列可以看成在队列基础上加了阻塞操作的队列。当队列为空的时候,出队操作阻塞,当......
  • 优先队列(基于二叉树的堆)
    代码出处GoSDKcontainer/heap/heap.goInterface接口定义typeInterfaceinterface{sort.InterfacePush(xinterface{})//addxaselementLen()Pop()interface{}//removeandreturnelementLen()-1.}sort.Interface是自定义排序时需要实现的接......
  • 时序电路中阻塞赋值和非阻塞赋值
    FPGA----非阻塞赋值与阻塞赋值1.0简介2.0阻塞赋值&非阻塞赋值2.1阻塞赋值2.2非阻塞赋值2.3区别3.0编码准则4.0举例准则1)时序电路建模时,用非阻塞赋值;准则2)锁存器电路建模时,用非阻塞赋值;准则3)用always块建立组合逻辑模型时,用阻塞赋值;准则4)在同一个always块中建......
  • 在时序电路中使用阻塞赋值会怎样
    阻塞赋值的使用如之前介绍所述,建议使用阻塞赋值来描述组合逻辑设计。但是,如果在编码时序逻辑行为时使用阻塞赋值,会发生什么?这是需要解决的最重要的问题之一,对后续讨论很重要。如果阻塞赋值用于编码时序逻辑的行为,则可以观察到综合结果不是正确的功能设计意图。接下来介绍使用......
  • rabbitMQ死信队列和延迟交换机
    一、死信队列(deadLetters)1.死信产生的三种方式(1)消息被消费者拒绝,requeue设置为false message在正常传输中消费者执行了nack或者reject且requeue变为false则将该message存储到死信交换机,再送入死信队列,重新被其他的消费者消费 (2)消息的TTL到期消息的TimeToLive生......
  • java代码向stream消息队列发送消息失败
    如何实现Java代码向Stream消息队列发送消息失败作为一名经验丰富的开发者,您可以教会刚入行的小白如何实现Java代码向Stream消息队列发送消息失败。本文将按照以下流程展示步骤,并提供相应的代码和注释。流程图以下是实现该功能的整体流程图:步骤动作1.创建Stream连接......