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

转载于:https://www.cnblogs.com/loveincode/p/7221266.html

ConcurrentLinkedQueue since java1.5相关推荐

  1. 【多线程】ConcurrentLinkedQueue 的实现原理

    1. 引言 在并发编程中我们有时候需要使用线程安全的队列.如果我们要实现一个线程安全的队列有两种实现方式:一种是使用阻塞算法,另一种是使用非阻塞算法.使用阻塞算法的队列可以用一个锁(入队和出队用同一把 ...

  2. Centos6.5下安装java1.7+apache-tomcat7.5

    CentOS6.5菜鸟之旅:安装SUN JDK1.7和Tomcat7 一.前言   CentOS6.5系统自带Open JDK1.7.1.6和1.5,但OpenJDK部分内容与SUN JDK不兼容,因 ...

  3. java 1.8 tar.gz_linux安装java1.8

    记录安装了linux下安装Java1.8一些细节: 1.下载网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downlo ...

  4. 死磕Java并发:J.U.C之Java并发容器:ConcurrentLinkedQueue

    作者:chenssy 来源:Java技术驿站 要实现一个线程安全的队列有两种方式:阻塞和非阻塞.阻塞队列无非就是锁的应用,而非阻塞则是CAS算法的应用.下面我们就开始一个非阻塞算法的研究:Coucur ...

  5. 【Java并发编程】—–“J.U.C”:ConcurrentLinkedQueue

    2019独角兽企业重金招聘Python工程师标准>>> 前言 在之前的文章中,已经对ArrayBlockingQueue.LinkedBlockingQueue这两个比较常用的阻塞队 ...

  6. Java HashMap的put操作(Java1.8)

    https://www.cnblogs.com/JzedyBlogs/p/10208295.html 写得非常好: 这个是Java1.8 ------------------------------- ...

  7. 并发队列-无界非阻塞队列 ConcurrentLinkedQueue 原理探究

    并发队列-无界非阻塞队列 ConcurrentLinkedQueue 原理探究 http://www.importnew.com/25668.html 一. 前言 常用的并发队列有阻塞队列和非阻塞队列 ...

  8. 关于java同步包中ConcurrentLinkedQueue类的深入分析与理解

    一,官方描写叙述 一个基于连接节点的无界线程安全队列.这个队列的顺序是先进先出.队列头部的元素是留在队列中时间最长的,队列尾部的元素是留在队列中时间最短的.新元素被插入到元素的尾部,队列从队列的头部检 ...

  9. ConcurrentLInkedQueue队列

    ConcurrentLInkedQueue 适用于高并发场景下的队列 基于连接节点的,无界线程安全队列 通过无锁的方式 实现了高并发状态下的高性能 先进先出 队列元素,遵循先进先出的原则 头是最先加入 ...

  10. salt的远程部署java-1.6.0-openjdk

    salt通过yum方式安装JDK: 1.设置salt-master的配置文件/etc/salt/master,打开242行注释如下: file_roots:   base:     - /srv/sa ...

最新文章

  1. kafka消息会不会丢失
  2. 提供企业研发管理解决方案,ONES获600万美元A+轮融资,华创资本领投
  3. nginx源码分析—内存池结构ngx_pool_t及内存管理
  4. 运行pythonp 提示:please select a valid interpreter(亲测)
  5. matlab特征点数量,特征点检测效果评估(matlab代码)
  6. intellij设置java中的代码中的import不折叠
  7. python wireshark_用python编写脚本从wireshark导出的数据文件中提取数据
  8. python报表_Python生成报表
  9. 不需要训练数据的图像恢复
  10. git笔记之解决eclipse不能提交jar等文件的问题
  11. http://zhcsmx22.blog.51cto.com
  12. 线性表的顺序表示---练习题(算法设计题
  13. VB6写的书籍下载软件 --老牛下书,还不错
  14. MATLAB有限元二维编程(三角单元)
  15. Selenium:元素判断
  16. autoexec.bat文件的所在位置
  17. python代码变量作业_1作业python数据类型 条件循环 列表
  18. HEVC(h265)学习
  19. Linux 的 top命令参数详解 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  20. 全方位了解平台爆款,解析B站热销商品,实现电商变现

热门文章

  1. mac git 自动补全
  2. 怎么用最短时间高效而踏实地学习Linux?
  3. 输入法相关的使用(跳转)
  4. 分布式消息系统jafka快速起步(转)
  5. [转载]AxureRP学习成长之路
  6. 清除回收站苦闷纠结欣喜
  7. 基于OHCI的USB主机 —— UFI命令概述
  8. 不能说的秘密-重载、重写与继承中的构造方法
  9. 电商项目的app学习笔记(四)-路由跳转的过渡动画实现
  10. vue的零碎知识点-黑马后台项目整理