上篇介绍LinkedBlockingQueue的依赖接口和抽象情况,这节看一下LinkedBlockingQueue本身
文章目录
- 可选有界队列,它是基于链表,支持FIFO(先进先出)
- head元素是在队列中已经排到时间最长的, tail 则在队列中已经排到时间最短的,所以新元素都是添加tail
- 一般来说基于链表队列通常比基于数组的队列具有更高吞吐量,但是在大多数并发应用程序中的可预测性能较差
- 如果没有指定容量默认就是Integer.MAX_VALUE
- 采用是双锁队列算法进行
1、内部类
1.1、Node 简单定义一下链表结构,只有后驱节点
-
static class Node<E> { E item; Node<E> next; Node(E x) { item = x; } }
1.2、Itr implements Iterator 迭代器
1.2.1、构造方法
- 构造方法也许需要加takeLock和putLock
- 初始化 current = head.next, currentElement=current.item;
1.2.2、成员变量
| 类型 | 字段 | 含义 |
|---|---|---|
| Node | current | 当前元素节点 |
| Node | lastRet | 最后返回节点 |
| E | currentElement | 当前元素 |
1.2.3、方法
| 方法名 | 描述 | |
|---|---|---|
| boolean hasNext() | 当前节点是否为空 | |
| E next() | 下一个节点 | |
| void remove() | 移除元素 | 1 |

最低0.47元/天 解锁文章
622

被折叠的 条评论
为什么被折叠?



