请选择时期:
怀孕准备 怀孕 分娩 宝宝0-1岁 宝宝1-3岁 宝宝3-6岁

java双端队列作用(java 双向队列)

来源: 最后更新:2023-01-31 00:17:48

导读:LinkedBlockingDeque概述LinkedBlockingDeque是由链表构成的界限可选的双端阻塞队列,支持O(1)的时间复杂度从两端插入和移除元素,如不指定边界,则为Integer.M
扫描关注公众号
The Beginning

LinkedBlockingDeque概述

LinkedBlockingDeque是由链表构成的界限可选的双端阻塞队列,支持O(1)的时间复杂度从两端插入和移除元素,如不指定边界,则为Integer.MAX_VALUE。ba8育儿早教网

由一个ReentrantLock保证同步,使用conditions来实现等待通知。ba8育儿早教网

ba8育儿早教网

linkLast

在last节点后加入节点node,更新last。如果插入之后超出容量,返回false。ba8育儿早教网

private boolean linkLast(Node node) { // assert lock.isHeldByCurrentThread(); 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();// 满足notEmpty条件 return true; }

ba8育儿早教网

unlinkFirst

移除first节点,并返回其item值,如果队列为空,则返回full。ba8育儿早教网

private E unlinkFirst() { // assert lock.isHeldByCurrentThread(); Node f = first; if (f == null) return null; Node n = f.next; E item = f.item; f.item = null; f.next = f; // help GC first = n; if (n == null) last = null; else n.prev = null; --count; notFull.signal();// 满足notFull条件 return item; }

ba8育儿早教网

unlink

移除任意一个节点,注意这里并没有操作x本身的连接,因为它可能仍被iterator使用着。ba8育儿早教网

void unlink(Node x) { // assert lock.isHeldByCurrentThread(); Node p = x.prev; Node n = x.next; // 移除的是first if (p == null) { unlinkFirst(); // 移除的是last } else if (n == null) { unlinkLast(); } else { // 移除的是中间节点 p.next = n; n.prev = p; x.item = null; // Don't mess with x's links. They may still be in use by // an iterator. // 这里x的prev和next指针都没有改变,因为他们可能在被iterator使用 --count; notFull.signal(); } }

ba8育儿早教网

总结

LinkedBlockingDeque是由链表构成的界限可选的双端阻塞队列,支持O(1)的时间复杂度从两端插入和移除元素,如不指定边界,则为Integer.MAX_VALUE。ba8育儿早教网

由一个ReentrantLock保证同步,使用conditions来实现等待通知。ba8育儿早教网

上面介绍的所有操作基本上就是核心方法啦,诸如putFirst、putLast、takeFirst、takeLast等方法都会调用上面的核心方法,而且实现上面也是比较简单的,就是双端链表的基本操作,不懂的可以画画图帮助理解哈。ba8育儿早教网

以上就是本站»java双端队列作用(java三种队列详解)的相关内容了,更多精彩请关注作者:万年知识ba8育儿早教网

声明:本文由本站【创业者资源平台】作者编辑发布,更多技术关注万年技术!ba8育儿早教网

ba8育儿早教网

THE END
广告、内容合作请点击这里 寻求合作
免责声明:本文系转载,版权归原作者所有;旨在传递信息,其原创性以及文中陈述文字和内容未经本站证实。

育儿知识

所属专题: [db:关键词]  

本文地址:http://www.yuerzaojiao.com/news/jiaodian/408869.html

最新文章
  • 1腾讯为什么告老干妈(腾讯跟老干妈什么情况)

    腾讯为什么告老干妈(腾讯跟老干妈什么情况)

  • 2突然确诊癌症中晚期,已转移!宁波男子无法接受:怎么可能!医生:发现一个,全家高危!

    突然确诊癌症中晚期,已转移!宁波男子无法接受:怎么可能!医生:发现一个,全家高危!

  • 3疑似皇马前主席之孙公然辱华,皇马却称“将致力于消除足球界种族歧视”?

    疑似皇马前主席之孙公然辱华,皇马却称“将致力于消除足球界种族歧视”?

  • 4韩军称朝鲜军人无意中越界 韩军称朝鲜军人无意中越界了吗

    韩军称朝鲜军人无意中越界 韩军称朝鲜军人无意中越界了吗

  • 5中纪委再打两“虎”!还有一“虎”被免职,一“虎”获刑十五年!

    中纪委再打两“虎”!还有一“虎”被免职,一“虎”获刑十五年!

  • 6吉林市将举办世界锅包肉大赛,此前召开座谈会论证锅包肉起源

    吉林市将举办世界锅包肉大赛,此前召开座谈会论证锅包肉起源

  • 7哪些爱爱姿势更容易怀孕 选择这些爱爱姿势帮助生儿生女

    哪些爱爱姿势更容易怀孕 选择这些爱爱姿势帮助生儿生女

  • 8男性精子存活时间有多久 精子存活率低怎么办

    男性精子存活时间有多久 精子存活率低怎么办

  • 9医生算错怀孕周数怎么办 孕龄胎龄预产期原来是这样算的

    医生算错怀孕周数怎么办 孕龄胎龄预产期原来是这样算的

  • 10备孕未准妈妈请注意 这里有份孕前自检表请签收

    备孕未准妈妈请注意 这里有份孕前自检表请签收

推荐文章

关于我们 | 广告服务 | 网站合作 | 免责声明 | 联系我们| 网站地图

© 2022 育儿早教网 All Rights Reserved. 沪ICP备20230950727号-10

声明: 本站文章均来自互联网,不代表本站观点 如有异议 请与本站联系 联系邮箱:kefu#yuerzaojiao.com (请把#替换成@)