当前位置:网站首页 > Java基础 > 正文

java阻塞队列实现(java阻塞是什么意思)



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

当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。

阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。

使用场景: 多线程并发处理,线程池!

队列 FIFO先进先出 一端写入一端取出

写入如果队列满了就必须阻塞等待 如果队列是空的必须阻塞等待生产

注意:BlockingQueue 不接受null值 试图添加一个null元素时会抛出异常

BlockingQueue 可以是限定容量的 超过给定容量时是无法添加的

  1. ArrayBolckingQueue(常用):基于数组的有界阻塞队列
  2. LinkedBlockingQueue(常用):基于链表的有界阻塞队列 大小默认为 Integer最大值
  3. PriorityBlockingQueue : 一个支持优先级排序的无界阻塞队列。
  4. DelayQueue: 使用优先级队列实现的延迟无界阻塞队列
  5. SynchronousQueue: 一个不存储元素的阻塞队列。
  6. LinkedTransferQueue: 一个由链表结构组成的无界阻塞队列。
  7. LinkedBlockingDeque: 一个由链表结构组成的双向阻塞队列

阻塞队列核心方法

方法类型抛出异常特殊值( 有返回值)阻塞超时插入addofferputoffer移除removepolltakepoll判断队列首elementpeek--

演示各个API的使用

第一组会抛出异常API演示 add remove element

在这里插入图片描述

第二组API使用

在这里插入图片描述

第三组阻塞API使用

放不进去了会一直阻塞直到有空位

在这里插入图片描述

第四组API使用

设置阻塞时间 超过阻塞时间没放进去就放弃等待

在这里插入图片描述

到此这篇关于java中的BlockingQueue(阻塞队列)解析的文章就介绍到这了,更多相关BlockingQueue阻塞队列内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

到此这篇java阻塞队列实现(java阻塞是什么意思)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • exe文件反编译为vb工程(exe反编译成java)2025-02-22 07:00:10
  • java调用dll动态库(java调用dll动态库二维数组)2025-02-22 07:00:10
  • java基础-(一)-JDK的下载和安装2025-02-22 07:00:10
  • java基础-(二)-第一个java程序2025-02-22 07:00:10
  • java基础-(三)-java基础语法2025-02-22 07:00:10
  • java的网站(java程序网站)2025-02-22 07:00:10
  • pytorch模型部署到springbootweb(pytorch模型部署到java)2025-02-22 07:00:10
  • python爬虫和java爬虫性能比较(python爬虫和java爬虫哪个好)2025-02-22 07:00:10
  • Java阻塞队列(java阻塞队列是线程安全的吗)2025-02-22 07:00:10
  • springweb和springwebmvc的关系(spring和javaweb)2025-02-22 07:00:10
  • 全屏图片