文章目录

  • 1. 概述
  • 2. 常用的阻塞队列
  • 3. 操作方法
    • 3.1 抛出异常
    • 3.2 特殊值
    • 3.3 阻塞
    • 3.4 超时

1. 概述

相比平时讨论的队列,阻塞队列增加了阻塞的功能:

  • 当有限长度的队列填满了数据时,继续往队列添加数据的线程将被阻塞住,持续等待,直到超时或队列数据被消费而腾出空间
  • 当队列数据为空时,消费线程会因为取不到数据而被阻塞,直到生产线程往队列添加数据,此时成功取到数据而不再阻塞

2. 常用的阻塞队列

  • ArrayBlockingQueue:由数组结构组成的有界阻塞队列,底层的出入队由同一个ReentrantLock加锁控制,可以传递fair参数指定使用公平锁 or 非公平锁
  • LinkedBlockingQueue:由链表结构组成的有界阻塞队列(容量默认是Integer.MAX_VALUE,因此也可以理解成无界)。其出入队由不同的ReentrantLock控制,因此性能优于ArrayBlockingQueue
  • SynchronousQueue:只存储一个元素的阻塞队列,容量大小只有1

<

Java进阶:BlockingQueue阻塞队列的使用相关推荐

  1. Java并发编程-BlockingQueue阻塞队列

    BlockingQueue阻塞队列 1.BlockingQueue介绍 1.1.引言: 1.2.阻塞队列介绍: 1.3.阻塞队列的用处: 1.4.接口架构图 2.BlockingQueue核心方法 3 ...

  2. 聊聊并发(七)——Java中的阻塞队列

    1. 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列.这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空.当队列满时,存储元素的线程会等待队列可用 ...

  3. 转:Java 7 种阻塞队列详解

    转自: Java 7 种阻塞队列详解 - 云+社区 - 腾讯云队列(Queue)是一种经常使用的集合.Queue 实际上是实现了一个先进先出(FIFO:First In First Out)的有序表. ...

  4. Java面试之阻塞队列

    阻塞队列 概念 队列 队列就可以想成是一个数组,从一头进入,一头出去,排队买饭(FIFO),和栈是一样的FIFO 阻塞队列 BlockingQueue 阻塞队列,排队拥堵,首先它是一个队列,而一个阻塞 ...

  5. BlockingQueue(阻塞队列)

    BlockingQueue 阻塞队列(BlockingQueue) 是一个支持两个附加操作的队列.这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空.当队列满时,存储元素的线程会等待队 ...

  6. BlockingQueue阻塞队列原理以及实现

    BlockingQueue原理以及实现 一,BlockingQueue 1,主要常用的队列有如下 2,基本工作原理实现如下 3,基本api使用如下 二,源码剖析 2.1,ArrayBlockingQu ...

  7. Java并发包--阻塞队列(BlockingQueue)

    阻塞队列介绍 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全"传输"数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质 ...

  8. java concurrenthashmap与阻塞队列

    https://blog.csdn.net/wozniakzhang/article/details/108106205 Java~并发容器ConcurrentHashMap.ConcurrentLi ...

  9. 让人抓头的Java并发(四) 阻塞队列--CPU飙升排查案例

    在上一篇文章中给大家介绍了牛批的AQS,大致讲解了JUC中同步的思路.本来还没想好这一篇应该写点什么,刚好上周某个同事的代码出现问题,排查后发现是使用阻塞队列不当导致的,所以本篇决定介绍下阻塞队列. ...

最新文章

  1. 在特定情况下的简单SSO实现方案
  2. [HAOI2009]毛毛虫
  3. find命令以及管道的简单使用技巧
  4. IdentityServer4实战 - 谈谈 JWT Token 的安全策略
  5. C++(STL):20---deque容器访问元素
  6. Sublime Text 3 Key
  7. 设置OWA重定向URL
  8. Size Classes with Xcode 6
  9. 一分钟学会Python中pip的安装与使用
  10. 前端:一篇彻底搞懂vuex中dispatch与commit的使用及差异
  11. java表示自然数,将一个正整数表示为连续自然数的和
  12. Onedrive服务器位置,移动或更改Windows 10中OneDrive文件夹的位置 | MOS86
  13. 关于HTTP请求出现405状态码 Method not allowed的解决办法
  14. 数据中台Citus集群压测报告
  15. php7 phalcon,GitHub - shyn0121/cphalcon7: Phalcon7 - Web framework for PHP7.x 高性能PHP7框架
  16. 【原创】给CSDN博客加上腾讯微博
  17. [更新中]【超强搞笑语录】给大家开心一下,不看你一定后悔
  18. 基于Matlab----多径衰落信道
  19. Stratis和VDO高级存储
  20. C语言DAY11 - 指针patr1

热门文章

  1. SAP中记账码的作用
  2. response code 404 500
  3. SAP的client概念
  4. php 安装pdo odbc,关于PHP安装扩展pdo_odbc
  5. python自动化弹框_Python+webdriver自动化脚本弹出框定位
  6. hp 交换机远程连接_使用iLO远程管理HP系列服务器
  7. ewomail 内部通讯_教你搭建自己的邮件服务器-Ubuntu 18.04下通过Docker使用EwoMail实现...
  8. c语言 字符串 if,C语言用if(strstr(s1,s2))判断字符串是否存在子字符串,无论有没有都会进入到if里是怎么回事?...
  9. vbs用mysql语句查询数据库_vbs脚本实现window环境下的mysql数据库的备份及删除早期备份...
  10. BUUCTF (pwn) bjdctf_2020_YDSneedGrirlfriend(UAF)