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

阻塞队列介绍

时间:2022-10-24 22:37:19浏览次数:51  
标签:插入 队列 元素 阻塞 介绍 生产者 线程


阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。

1)支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。

2)支持阻塞的移除方法:意思是在队列为空时,获取元素的线程会等待队列变为非空。

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

在阻塞队列不可用时,这两个附加操作提供了4种处理方式

阻塞队列介绍_阻塞队列

·抛出异常:当队列满时,如果再往队列里插入元素,会抛出IllegalStateException(“Queue full”)异常。当队列空时,从队列里获取元素会抛出NoSuchElementException异常。

·返回特殊值:当往队列插入元素时,会返回元素是否插入成功,成功返回true。如果是移除方法,则是从队列里取出一个元素,如果没有则返回null。

·一直阻塞:当阻塞队列满时,如果生产者线程往队列里put元素,队列会一直阻塞生产者线程,直到队列可用或者响应中断退出。当队列空时,如果消费者线程从队列里take元素,队列会阻塞住消费者线程,直到队列不为空。

·超时退出:当阻塞队列满时,如果生产者线程往队列里插入元素,队列会阻塞生产者线程一段时间,如果超过了指定的时间,生产者线程就会退出。

JDK 7提供了7个阻塞队列,如下。

·ArrayBlockingQueue:一个由数组结构组成的有界阻塞队列。

·LinkedBlockingQueue:一个由链表结构组成的有界阻塞队列。

·PriorityBlockingQueue:一个支持优先级排序的无界阻塞队列。

·DelayQueue:一个使用优先级队列实现的无界阻塞队列。

·SynchronousQueue:一个不存储元素的阻塞队列。

·LinkedTransferQueue:一个由链表结构组成的无界阻塞队列。

·LinkedBlockingDeque:一个由链表结构组成的双向阻塞队列。

实时内容请关注微信公众号,公众号与博客同时更新:程序员星星

阻塞队列介绍_java_02


标签:插入,队列,元素,阻塞,介绍,生产者,线程
From: https://blog.51cto.com/u_7841967/5791472

相关文章

  • Netty介绍、BIO与NIO基础知识
    第1章Netty介绍和应用场景1.1Netty介绍Netty是由JBOSS提供的一个Java开源框架,现为Github上的独立项目。Netty是一个异步的、基于事件驱动的网络应用框架,用以快速开......
  • DevOps|1024程序员节怎么做?介绍下我的思路
    1024,祝每个程序员小哥哥小姐姐节日快乐。因为在研发效能部门,我支持过几次1024程序员节的活动,所以经常有朋友问我1024程序员节怎么做,本篇就是简单介绍下我的思路,希望对......
  • VTK技术介绍
    1.VTK的管线技术VKT的可视化过程就是数据在管线中流动,被管线不同的对象处理,最终以图形的方式表现出来。可视化模型就是把用户输入的原始数据,经过变换,成为图形模型可以接受......
  • SAP UI5 sap.ui.Device.media 公有方法介绍
    sap.ui.Device.media.attachHandler:注册给定的事件处理程序以根据使用指定名称设置的范围更改屏幕宽度的事件。每当屏幕宽度发生变化并且当前屏幕宽度处于与宽度变化之前......
  • Kafka历史&客户端功能介绍
    Producer新旧对比新版本:发送过程被分为两个线程,一条消息发送后经用户主线程进入内存缓冲区,SenderI/O线程将缓冲区中的数据分批发给Kafkabroker完全异步发送消息,通过F......
  • 硬件加密芯片介绍 及 加密芯片选择(加密IC) 加密芯片原理
    前端时间有研究多款加密芯片,加密算法实现,以及破解可能,也有一些个人的观点,仅供参考; 一,加密芯片的来源及工作流程:市面上的加密芯片,基本都是基于某款单片机,使用I2C或SPI等......
  • awk介绍
    ​awk基础awk基本语法如下,awk[options]‘program’file对于上述语法中的program来说,又可以细分成pattern和action,也就是说,awk的基本语法如下awk[options]‘Patte......
  • 复合事件处理(Complex Event Processing)介绍
    复合事件是由史丹佛大学的DavidLuckham与BrianFraseca所提出,DavidLuckham与BrianFraseca于1990年提出复合事件架构,使用模式比对、事件的相互关系......
  • sed介绍
    1、sed介绍   sed全名为streameditor,流编辑器,用程序的方式来编辑文本,功能相当的强大。是贝尔实验室的LeeE.McMahon在1973年到1974年之间开发完成,目前可以在......
  • 【kubernetes入门到精通】Kubernetes架构分析介绍篇「进阶篇」
    意志的出现不是对愿望的否定,而是把愿望合并和提升到一个更高的意识水平上。——罗洛·梅官方网站​​Kubernetes中文官方网站​​​​Kubernetes英文官方网站​​Kubernetes......