Java 几种队列区别的简单说明

Posted 观心静

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 几种队列区别的简单说明相关的知识,希望对你有一定的参考价值。

前言

  队列,字面意思就可以明白. 是一种线性的数据暂存与管理工具. 也可以让各种业务功能进行逐个的队列运行. 此篇博客只说明一下Java有几种队列

未阻塞和阻塞队列的区别

  未阻塞:

    1.未阻塞的队列在并发想队列添加或者取得数据的时候,必定只会有一个成功,其他都可能添加失败.

  阻塞:

    1.阻塞的队列会进行线程阻塞操作,让并发的添加或者取得数据进行一定程度的延迟,可以保证大量并发数据的添加. 但是阻塞也是有超时时间的.. 超过一段时间后依然会抛出异常或者抛出false

 

没有实现阻塞接口

实现java.util.Queue的LinkList,
实现java.util.AbstractQueue接口内置的不阻塞队列: PriorityQueue 和 ConcurrentLinkedQueue

实现阻塞接口的

java.util.concurrent 中加入了 BlockingQueue 接口和五个阻塞队列类。它实质上就是一种带有一点扭曲的 FIFO 数据结构。不是立即从队列中添加或者删除元素,线程执行操作阻塞,直到有空间或者元素可用。
五个队列所提供的各有不同:
  * ArrayBlockingQueue :一个由数组支持的有界队列。
  * LinkedBlockingQueue :一个由链接节点支持的可选有界队列。
  * PriorityBlockingQueue :一个由优先级堆支持的无界优先级队列。
  * DelayQueue :一个由优先级堆支持的、基于时间的调度队列。
  * SynchronousQueue :一个利用 BlockingQueue 接口的简单聚集(rendezvous)机制。

以上是关于Java 几种队列区别的简单说明的主要内容,如果未能解决你的问题,请参考以下文章

优先队列

关于Java集合类库中的几种常用队列

java中的集合有几种

java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)

(转)java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)

(转)java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)