zoukankan      html  css  js  c++  java
  • ConcurrentLinkedQueue since java1.5

    1 父类 

    java.lang.Object

      继承者 java.util.AbstractCollection<E>

          继承者 java.util.AbstractQueue<E>

              继承者 java.util.concurrent.ConcurrentLinkedQueue<E>

    类型参数:

      E - 在此 collection 中保持的元素类型

    所有已实现的接口:

      Serializable, Iterable<E>, Collection<E>, Queue<E>

    2 类定义

    public class ConcurrentLinkedQueue<E>

      extends AbstractQueue<E>

        implements Queue<E>, Serializable

    3 官方说明

      一个基于链接节点的无界线程安全队列。此队列按照 FIFO(先进先出)原则对元素进行排序。队列的头部 是队列中时间最长的元素。队列的尾部是队列中时间最短的元素。新的元素插入到队列的尾部,队列获取操作从队列头部获得元素。当多个线程共享访问一个公共 collection 时,ConcurrentLinkedQueue 是一个恰当的选择。此队列不允许使用 null 元素。

      此实现采用了有效的“无等待 (wait-free)”算法,该算法基于 Maged M. Michael 和 Michael L. Scott 合著的 Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms 中描述的算法。

       需要小心的是,与大多数 collection 不同,size 方法不是 一个固定时间操作。由于这些队列的异步特性,确定当前元素的数量需要遍历这些元素。

       此类及其迭代器实现了 Collection 和 Iterator 接口的所有可选 方法。

       内存一致性效果:当存在其他并发 collection 时,将对象放入 ConcurrentLinkedQueue 之前的线程中的操作 happen-before 随后通过另一线程从 ConcurrentLinkedQueue 访问或移除该元素的操作。

       此类是 Java Collections Framework 的成员。

    4 构造方法摘要

    ConcurrentLinkedQueue()

              创建一个最初为空的 ConcurrentLinkedQueue。

    ConcurrentLinkedQueue(Collection<? extends E> c)

              创建一个最初包含给定 collection 元素的 ConcurrentLinkedQueue,按照此 collection 迭代器的遍历顺序来添加元素。

    5 方法摘要

     boolean add(E e)

              将指定元素插入此队列的尾部。

     boolean contains(Object o)

              如果此队列包含指定元素,则返回 true。

     boolean isEmpty()

              如果此队列不包含任何元素,则返回 true。

     Iterator<E> iterator()

              返回在此队列元素上以恰当顺序进行迭代的迭代器。

     boolean offer(E e)

              将指定元素插入此队列的尾部。

     E peek()

              获取但不移除此队列的头;如果此队列为空,则返回 null。

     E poll()

              获取并移除此队列的头,如果此队列为空,则返回 null。

     boolean remove(Object o)

              从队列中移除指定元素的单个实例(如果存在)。

     int size()

              返回此队列中的元素数量。

     Object[] toArray()

              返回以恰当顺序包含此队列所有元素的数组。

    <T> T[]

     toArray(T[] a)

              返回以恰当顺序包含此队列所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。

    6 继承的方法

    从类 java.util.AbstractQueue 继承的方法

      addAll, clear, element, remove

    从类 java.util.AbstractCollection 继承的方法

      containsAll, removeAll, retainAll, toString

    从类 java.lang.Object 继承的方法

      clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    从接口 java.util.Queue 继承的方法

      element, remove

    从接口 java.util.Collection 继承的方法

      addAll, clear, containsAll, equals, hashCode, removeAll, retainAll

  • 相关阅读:
    单词方阵【DFS】
    关于vs扩展下载慢的问题。(更改一下,补充)
    归并排序的应用
    用qt做了个简易音乐播放器(零基础真的是太难了)
    实操理解微软所说的“物理文件位置”和“逻辑文件位置”的区别
    获取指定数量的容器的各自的所有元素,并可对容器分页
    [备忘]silverlight中关于“复制到输出目录”和“生成操作”
    [备忘]silverlight中播放视频路径问题
    与并行相关的常见概念
    巧用vs的PostBuildEvent
  • 原文地址:https://www.cnblogs.com/loveincode/p/7221266.html
Copyright © 2011-2022 走看看