首页
学习
活动
专区
工具
TVP
发布

Java集合之阻塞双向队列LinkedBlockingDeque

smile

LinkedBlockingDeque是链表形式的双向链表,通过一个内部类Node实现,看下Node类的定义:

static final class Node {

E item;

Node prev;

Node next;

Node(E x) {

item = x;

}

}

在类LinkedBlockingDeque中有两个变量first 和last,并通过Node的prev和next实现双向队列。

Node first;

Node last;

看看入队方法,会有类似addLast和addFirst的方法,方法最终调用linkFist和linkLast的方法,看看方法定义:

//从头部入队

private boolean linkFirst(Node node) {

if (count >= capacity)

return false;

Node f = first;

node.next = f;

first = node;

if (last == null)

last = node;

else

f.prev = node;

++count;

notEmpty.signal();

return true;

}

//从尾部入队

private boolean linkLast(Node node) {

if (count >= capacity)

return false;

Node l = last;

node.prev = l;

last = node;

if (first == null)

first = node;

else

l.next = node;

++count;

notEmpty.signal();

return true;

}

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200211A0PEV200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券