ArrayBlockingQueue队列
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队列相关推荐
- 线程池三种队列使用,SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue
使用方法: private static ExecutorService cachedThreadPool = new ThreadPoolExecutor(4, Runtime.getRuntime ...
- 并发编程(十三):阻塞队列之ArrayBlockingQueue
一,关联源码链接 * 并发编程(四):AbstractQueuedSynchronizer源码分析 * 并发编程(五):AQS之重入锁ReentrantLock * 并发编程(七):AQS之Condi ...
- Java中的5大队列,你知道几个?
作者 | 王磊 来源 | Java中文社群(ID:javacn666) 通过前面文章的学习<一文详解「队列」,手撸队列的3种方法!>我们知道了队列(Queue)是先进先出(FIFO)的,并 ...
- java add offer_图解Java中的5大队列!(干货收藏)
Java 中的队列有很多,例如:ArrayBlockingQueue.LinkedBlockingQueue.PriorityQueue.DelayQueue.SynchronousQueue等,那它 ...
- 【Java 并发编程】线程池机制 ( ThreadPoolExecutor 线程池构造参数分析 | 核心线程数 | 最大线程数 | 非核心线程存活时间 | 任务阻塞队列 )
文章目录 前言 一.ThreadPoolExecutor 构造参数 二.newCachedThreadPool 参数分析 三.newFixedThreadPool 参数分析 四.newSingleTh ...
- 【学习笔记】抽象队列同步器AQS应用之BlockingQueue详解
文章目录 什么是AQS框架 Aqs核心源码 基于aqs实现的锁 BlockingQueue ArrayBlockingQueue LinkedBlockingQueue DelayQueue Bloc ...
- 高性能队列——Disruptor
背景 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级).基于Disruptor开发的系统单线程能 ...
- 面试官系统精讲Java源码及大厂真题 - 25 整体设计:队列设计思想、工作中使用场景
25 整体设计:队列设计思想.工作中使用场景 人生太短,要干的事太多,我要争分夺秒. --爱迪生 引导语 本章我们学习了 LinkedBlockingQueue.ArrayBlockingQueue. ...
- 【重难点】【Java集合 04】ArrayDeque 的使用场景、ArrayBlockingQueue
[重难点][Java集合 04]ArrayDeque 的使用场景.ArrayBlockingQueue 的源码实现 文章目录 [重难点][Java集合 04]ArrayDeque 的使用场景.Arra ...
最新文章
- NO.7 今天我们是实用派,看看业务选择和部署以及常用故障解决方案是怎么做的...
- 将一个简单远程调用的方式例子改为异步调用 -- 2
- 防止HALCON刷新图像窗口控件闪烁
- Access链接表的使用
- 百度App网络深度优化系列《一》DNS优化
- VS C# 中使用番茄助手
- JSON网络传输协议
- 迅雷精简版依托迅雷强大的P2P资源网络和独特的下载技术
- iOS系统安全学习小结(一)
- C++ Reflection
- 基于Java的超级玛丽游戏的设计与实现(含源文件)
- python读取千万级数据库数据类型_Python 基于Python从mysql表读取千万数据实践
- 使用自然语言处理来检测电子邮件中的垃圾邮件
- mplfinance 一个堪称完美python量化金融可视化工具详析
- TI 评级报告 | RAI Finance:B,展望正面
- Native xdp hook 点
- 基于EasyIPCamera实现的数字网络摄像机IPCamera的模拟器IPC RTSP Simulator
- 说一下自动化测试的优缺点
- 光伏行业报告:N型发展推动POE胶膜应用,POE产业链进入红利期
- mysql中用于实现事务提交的语句是什么,实现事务提交的语句是什么
热门文章
- Tornado源码分析 --- 静态文件处理模块
- Android USB Gadget复合设备驱动(打印机)测试方法
- socket通信入门
- Android构建boot.img:root目录与ramdisk.img的生成
- I2C_ADDRS(addr, addrs...)理解
- 膨胀卷积(Dilated convolution)
- 排序 (2)快速排序-多个数组
- 智能合约重构社会契约(6)赛迪智能合约安全标准
- leetcode-简单题-题序:9+13
- 【Python小游戏】扫雷游戏竟有世界排行榜,中国90后00后霸占半壁江山?