创意电子

标题: ArrayBlockingQueue 入队和出队的源码分析 [打印本页]

作者: 指尖代码    时间: 2021-9-14 00:00
标题: ArrayBlockingQueue 入队和出队的源码分析
本日我们来聊一聊以数组为数据结构的壅闭队列 ArrayBlockingQueue,它实现了 BlockingQueue 接口,继续了抽象类 AbstractQueue。
BlockingQueue 提供了三个元素入队的方法。
boolean add(E e);boolean offer(E e);void put(E e) throws InterruptedException;
三个元素出队的方法。
E take() throws InterruptedException;E poll(long timeout, TimeUnit unit)        throws InterruptedException;boolean remove(Object o);
一起来看看,ArrayBlockingQueue 是如何实现的吧。
初识

首先看一下 ArrayBlockingQueue 的主要属性和构造函数。
属性

//存放元素final Object[] items; //取元素的索引int takeIndex;//存元素的索引int putIndex;//元素的数量int count;//控制并发的锁final ReentrantLock lock;//非空条件信号量private final Condition notEmpty;//非满条件信号量private final Condition notFull;transient Itrs itrs = null;
从以上属性可以看出:
构造函数


ArrayBlockingQueue 有三个构造函数,此中 <span style="color: #555555; --tt-darkmode-color: #919191;"><span style="background-color: #EEEEEE; --tt-darkmode-bgcolor: #232323;">public ArrayBlockingQueue(int capacity, boolean fair, Collection




欢迎光临 创意电子 (https://wxcydz.cc/) Powered by Discuz! X3.4