• Java之集合(十九)LinkedBlockingDeque


      转载请注明源出处:http://www.cnblogs.com/lighten/p/7494577.html

    1.前言

      本章介绍LinkedBlockingDeque,这是一个可选容量的有界双向链表队列,默认容量大小是Integer.MAX_VALUE,基本可以认为是无界了。其方法大多是常量时间操作,除了remove相关方法和contains以及所有bulk操作是和元素个数相关的线性时间开销。

    2.LinkedBlockingDeque

    2.1数据结构

      标准的一个双向链表的结构,第一个节点,最后一个节点,计数字段,容量字段和锁相关的三个字段。Node节点也就是前后结点和当前值。

    2.2基本操作

      头结点插入一个元素:

      加锁,判断容量,将当前结点的下一个节点设置成当前头结点,该节点设置成头结点。第一次插入last为null,由于是头插入,第一次的头结点就设置成尾结点,否则就完成双向链表的链接。尾插入的做法类似,不过更新的是尾结点。

      取出头结点:

      加锁,找到当前头结点,如果为null,证明队列为空返回null。不为null,找到下一个节点,设置成头结点。下一个节点为null,队列为空,尾结点也就是null,否者下一个节点的没有前一个节点。返回当前头节点里面的内容。这里有意思的是当前头结点的内容置为了null,但是下一个节点置为其本身,注释上写着help GC,由于没有对GC回收研究过,所以暂且这样认为。

      上面都是一些标准的双向链表的头尾插入方法,其它方法没有什么特殊的,就不再进行介绍。使用和一般的队列使用方法是一样的,也不给出用例了。

  • 相关阅读:
    说一下AOP和IOC的实现原理
    sql 2005 express版本如果安装vs 2010则被sql 2008 express升级代替
    北京热死了
    Webservices,remoting,WCF比较一下
    CGI(拾遗)
    士农工商
    外网无法访问iis服务器
    好好整理了一下胡子
    用IIS在本机虚拟一个域名发布站点(小技巧)
    给目前自己开发的分布式系统做个定义
  • 原文地址:https://www.cnblogs.com/lighten/p/7494577.html
Copyright © 2020-2023  润新知