在我们学习了ArrayBlockingQueue的基本内容后,需要进一步的对其源码进行探索,找出其中的一些方法,以及对用法的原理上有更深刻的理解。下面我们就ArrayBlockingQueue类的定义进行解析,找寻其参数、构造方法、同步机制的概念,进一步在其中分析源码。
1. 类的定义
publicclassArrayBlockingQueue<E>extendsAbstractQueue<E> implementsBlockingQueue<E>,java.io.Serializable
类的定义中可以看出
ArrayBlockingQueue是一个泛型类
ArrayBlockingQueue继承了AbstractQueue类,AbstractQueue是一个抽象类(模板方法)
ArrayBlockingQueue实现了BlockingQueue接口,表示一个阻塞队列
ArrayBlockingQueue实现了java.io.Serializable,表示支持序列化
2.参数
/**队列中存放的值*/ finalObject[]items; /**值的索引,这是取出位置的索引*/ inttakeIndex; /**值的索引,这是插入位置的索引*/ intputIndex; /**队列中有多少个元素*/ intcount;
3.构造方法
publicArrayBlockingQueue(intcapacity){ this(capacity,false); } publicArrayBlockingQueue(intcapacity,booleanfair){ if(capacity<=0) thrownewIllegalArgumentException(); //初始化数组 this.items=newObject[capacity]; //创建重入锁及两个条件 lock=newReentrantLock(fair); notEmpty=lock.newCondition(); notFull=lock.newCondition(); }
通过构造方法我们可以得出以下两个结论:
(1)ArrayBlockingQueue初始化时必须传入容量,也就是数组的大小;
(2)可以通过构造方法控制重入锁的类型是公平锁还是非公平锁。
4.同步机制
原文来自:https://www.py.cn
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容