ArrayBlockingQueue

也称为有界队列
基于数组的阻塞队列实现

内部,维护了一个定长数组,便于缓存队列中的数据对象
内部,没有实现读写分离,意味着生产者、消费者不能完全并行

长度需要定义,不指定会报错
可以指定先进先出,或者先进后出

package com.bjsxt.base.coll013;import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.TimeUnit;import javax.swing.text.html.HTMLDocument.Iterator;public class UseQueue {public static void main(String[] args) throws Exception {ArrayBlockingQueue<String> array = new ArrayBlockingQueue<String>(5);array.put("a");array.put("b");array.add("c");array.add("d");array.add("e");System.out.println(array.offer("a", 3, TimeUnit.SECONDS));}
}

3秒之内
如果,a元素加进去了,返回true
如果,a元素没有加进去,返回false

运行

package com.bjsxt.base.coll013;import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.TimeUnit;import javax.swing.text.html.HTMLDocument.Iterator;public class UseQueue {public static void main(String[] args) throws Exception {ArrayBlockingQueue<String> array = new ArrayBlockingQueue<String>(5);array.put("a");array.put("b");array.add("c");array.add("d");array.add("e");array.add("f");System.out.println(array.offer("a", 3, TimeUnit.SECONDS));}
}

定义长度为5
添加6个元素,直接报错

运行

ArrayBlockingQueue队列相关推荐

  1. 线程池三种队列使用,SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue

    使用方法: private static ExecutorService cachedThreadPool = new ThreadPoolExecutor(4, Runtime.getRuntime ...

  2. 并发编程(十三):阻塞队列之ArrayBlockingQueue

    一,关联源码链接 * 并发编程(四):AbstractQueuedSynchronizer源码分析 * 并发编程(五):AQS之重入锁ReentrantLock * 并发编程(七):AQS之Condi ...

  3. Java中的5大队列,你知道几个?

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 通过前面文章的学习<一文详解「队列」,手撸队列的3种方法!>我们知道了队列(Queue)是先进先出(FIFO)的,并 ...

  4. java add offer_图解Java中的5大队列!(干货收藏)

    Java 中的队列有很多,例如:ArrayBlockingQueue.LinkedBlockingQueue.PriorityQueue.DelayQueue.SynchronousQueue等,那它 ...

  5. 【Java 并发编程】线程池机制 ( ThreadPoolExecutor 线程池构造参数分析 | 核心线程数 | 最大线程数 | 非核心线程存活时间 | 任务阻塞队列 )

    文章目录 前言 一.ThreadPoolExecutor 构造参数 二.newCachedThreadPool 参数分析 三.newFixedThreadPool 参数分析 四.newSingleTh ...

  6. 【学习笔记】抽象队列同步器AQS应用之BlockingQueue详解

    文章目录 什么是AQS框架 Aqs核心源码 基于aqs实现的锁 BlockingQueue ArrayBlockingQueue LinkedBlockingQueue DelayQueue Bloc ...

  7. 高性能队列——Disruptor

    背景 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级).基于Disruptor开发的系统单线程能 ...

  8. 面试官系统精讲Java源码及大厂真题 - 25 整体设计:队列设计思想、工作中使用场景

    25 整体设计:队列设计思想.工作中使用场景 人生太短,要干的事太多,我要争分夺秒. --爱迪生 引导语 本章我们学习了 LinkedBlockingQueue.ArrayBlockingQueue. ...

  9. 【重难点】【Java集合 04】ArrayDeque 的使用场景、ArrayBlockingQueue

    [重难点][Java集合 04]ArrayDeque 的使用场景.ArrayBlockingQueue 的源码实现 文章目录 [重难点][Java集合 04]ArrayDeque 的使用场景.Arra ...

最新文章

  1. NO.7 今天我们是实用派,看看业务选择和部署以及常用故障解决方案是怎么做的...
  2. 将一个简单远程调用的方式例子改为异步调用 -- 2
  3. 防止HALCON刷新图像窗口控件闪烁
  4. Access链接表的使用
  5. 百度App网络深度优化系列《一》DNS优化
  6. VS C# 中使用番茄助手
  7. JSON网络传输协议
  8. 迅雷精简版依托迅雷强大的P2P资源网络和独特的下载技术
  9. iOS系统安全学习小结(一)
  10. C++ Reflection
  11. 基于Java的超级玛丽游戏的设计与实现(含源文件)
  12. python读取千万级数据库数据类型_Python 基于Python从mysql表读取千万数据实践
  13. 使用自然语言处理来检测电子邮件中的垃圾邮件
  14. mplfinance 一个堪称完美python量化金融可视化工具详析
  15. TI 评级报告 | RAI Finance:B,展望正面
  16. Native xdp hook 点
  17. 基于EasyIPCamera实现的数字网络摄像机IPCamera的模拟器IPC RTSP Simulator
  18. 说一下自动化测试的优缺点
  19. 光伏行业报告:N型发展推动POE胶膜应用,POE产业链进入红利期
  20. mysql中用于实现事务提交的语句是什么,实现事务提交的语句是什么

热门文章

  1. Tornado源码分析 --- 静态文件处理模块
  2. Android USB Gadget复合设备驱动(打印机)测试方法
  3. socket通信入门
  4. Android构建boot.img:root目录与ramdisk.img的生成
  5. I2C_ADDRS(addr, addrs...)理解
  6. 膨胀卷积(Dilated convolution)
  7. 排序 (2)快速排序-多个数组
  8. 智能合约重构社会契约(6)赛迪智能合约安全标准
  9. leetcode-简单题-题序:9+13
  10. 【Python小游戏】扫雷游戏竟有世界排行榜,中国90后00后霸占半壁江山?