background image

 

java 中 queue 的使用

Queue 接 口 与 List、 Set 同 一 级 别 , 都 是 继 承 了 Collection 接 口 。 LinkedList 实 现 了

Queue

 

接 口。Queue 接口窄化了对 LinkedList 的方法的访问权限(即在方法中的参

数类型如果是 Queue 时,就完全只能访问 Queue

 

接口所定义的方法 了,而不能直

 

接 访 问 LinkedList 的 非 Queue 的 方 法 ) , 以 使 得 只 有 恰 当 的 方 法 才 可 以 使 用 。

BlockingQueue 继承了 Queue 接口。

队列是一种数据结构.它有两个基本操作:在队列尾部加人一个元素,和从队列

头部移除一个元素就是说,队列以一种先进先出的方式管理数据,如果你试图向

 

一个 已经满了的阻塞队列中添加一个元素或者是从一个空的阻塞队列中移除一个

元索,将导致线程阻塞.在多线程进行合作时,阻塞队列是很有用的工具。工作者

 

线程可 以定期地把中间结果存到阻塞队列中而其他工作者线线程把中间结果取出

并在将来修改它们。队列会自动平衡负载。如果第一个线程集运行得比第二个慢,

 

则第二个 线程集在等待结果时就会阻塞。如果第一个线程集运行得快,那么它将

等待第二个线程集赶上来。下表显示了 jdk1.5 中的阻塞队列的操作:

add               

                                         

增 加 一 个 元 索

如 果 队 列 已 满 , 则 抛 出 一 个

IIIegaISlabEepeplian 异常

remove      

       

移 除 并 返 回 队 列 头 部 的 元 素

如 果 队 列 为 空 , 则 抛 出 一 个

NoSuchElementException 异常

element    

                         

返 回 队 列 头 部 的 元 素

如 果 队 列 为 空 , 则 抛 出 一 个

NoSuchElementException 异常

offer       添加一个元素并返回 true       如果队列已满,则返回 false

poll         

    

移除并返问队列头部的元素

如果队列为空,则返回 null

peek       

             

返回队列头部的元素

如果队列为空,则返回 null

put         

                      

添加一个元素

如果队列满,则阻塞

take        

     

移除并返回队列头部的元素

如果队列为空,则阻塞